为什么Visual Studio 2015/2017/2019测试运行器没有发现我的xUnit v2测试

时间:2016-01-30 15:55:13

标签: .net visual-studio unit-testing visual-studio-2015 xunit2

更新:添加2019;发现/跑步者整合机制与2017年相同。 2015年,所以可能出错的关键事情都是一样的。

我已经阅读了Why is the xUnit runner not finding my tests, which covers reasons xUnit would never be able to find your tests,但我的问题却与众不同 - 我确信在我的测试中并没有任何微妙的影响; (他们在其他环境中工作,这似乎只是我的机器) - Visual Studio 2015中的Visual Studio Test Runner [社区版]根本没有显示我的测试的任何。我没有做任何令人兴奋的事情;测试以桌面上的xUnit.net v2为目标。

我已经在“输出”窗口中查看了测试测试标签中的测试

35 个答案:

答案 0 :(得分:184)

  1. 消除查询中的发现异常;转到输出窗口(Ctrl-Alt-O),然后将显示输出从下拉列表(Shift-Alt-S)切换到测试并确保没有发现例外

  2. As suggested in this answer(upvote it if the technique helps) 运行桌面控制台运行器(instructions)可以是一个很好的交叉检查,以消除其他可能性,例如损坏的配置文件: -

      

    packages\xunit.runner.console.2.2.0\tools\xunit.console <tests.dll>

  3. 测试|测试设置|默认处理器架构可以提供帮助,如果您的测试是特定于x86 / x64并且发现正在触发与bittedness相关的异常,即不是 AnyCpu

  4. Go read the documentation - 它是全面的,最新的,包括故障排除信息并采取PR: -

      

    重要说明:如果您以前安装了xUnit.net Visual Studio Runner VSIX(扩展),则必须先将其卸载。 Visual Studio运行程序现在只通过NuGet分发。要删除它,请转到工具&gt; 扩展程序和更新。滚动到列表底部,如果安装了xUnit.net,请将其卸载。这将强制您重新启动Visual Studio。

         

    如果您在发现或运行测试时遇到问题,则可能是Visual Studio中损坏的运行时缓存的受害者。要清除此缓存,请关闭所有Visual Studio实例,然后删除文件夹%TEMP%\VisualStudioTestExplorerExtensions。还要确保您的项目仅链接到单个版本的Visual Studio runner NuGet包(xunit.runner.visualstudio)。

    以下步骤对我有用:

    1. (只有当您怀疑机器出现严重问题时 - 通常情况下,更常见的情况是视觉工作室集成尚未安装)

      按照建议做DEL %TEMP%\VisualStudioTestExplorerExtensions: -

      PS> del $env:TEMP\VisualStudioTestExplorerExtensions

    2. 在所有测试项目中安装NuGet包xunit.runner.visualstudio

      • Paket:

        .paket\paket add nuget xunit.runner.visualstudio -i
        

        您需要在paket.dependencies 中填写以下内容:

        nuget xunit.runner.visualstudio version_in_path: true

        请注意version_in_path: true位非常重要

      • Nuget:转到程序包管理器控制台(Alt-T,N,O)和

        Install-Package xunit.runner.visualstudio)
        

      重建以确保xunit.runner在输出目录

    3. 中结束
    4. 关闭测试资源管理器 &lt; - 这是我的遗漏

    5. 重新打开测试资源管理器(Alt-S,W,T)

    6. 运行所有测试(Ctrl R,A)

答案 1 :(得分:26)

以上解决方案均不适合我(dotnetcore 1.1,VS2017)。这是修正它的原因:

  1. 添加NuGet包“Microsoft.TestPlatform.TestHost”
  2. 添加NuGet 包“Microsoft.NET.Test.Sdk”
  3. 除我之前安装的这些软件包之外,还有

    • xunit(2.3.0-beta1-build3642)
    • xunit.runner.visualstudio (2.3.0-β1-build1309)

答案 2 :(得分:23)

将测试项目CPU更改为x64后,我不得不更改测试设置。 然后再次检测到测试。

Architecture

答案 3 :(得分:17)

为测试项目安装xunit.runner.visualstudio

答案 4 :(得分:13)

请按照以下步骤操作:

  1. MsTest.TestAdapter更新您的MsTest.TestFrameworkdll's nugget package manager
  2. 清洁您的解决方案
  3. 构建解决方案。

答案 5 :(得分:10)

在使用ASP核心项目和xUnit 2.2.0的整个下午,我一直在努力解决这个问题。我的解决方案是添加对Microsoft.DotNet.InternalAbstractions

的引用

我在尝试使用dotnet test手动运行测试项目时发现了这一点,但失败但报告InternalAbstractions丢失了。当自动发现失败时,我在测试输出窗口中没有看到此错误。我在发现窗口中看到的唯一信息是返回代码,当时对我来说并不意味着什么,但事后看来可能是错误。

答案 6 :(得分:8)

这种情况发生在我身上几次 - 当我清理项目并再次构建它时,它往往会很好。

答案 7 :(得分:5)

花了2天......以上都没有为我工作。唯一的“解决方案”是: 转到项目属性 - &gt;构建选项卡。然后单击窗格右下角的“高级”按钮。将“Debug Info:”更改为“full”,然后单击“确定”。

以下是截图: enter image description here

enter image description here enter image description here

答案 8 :(得分:5)

我可以为几天前遇到的边缘案例提供解决方案。它不会成为适合上述所有场景的解决方案,但是,对于边缘情况,我已经修复了它。

我最近的VS 2017(版本15.5.7)和XUnit 2.3.1遇到了同样的问题。安装了xunit.runner.visualstudio软件包,然而,测试并没有出现在VisualStudio的内置测试资源管理器中。

我正在开发一个针对.NET framework 4.5的遗留项目。但是,从2.2版开始。 XUnit不支持低于4.5.2的.NET框架(参见Release Notes - XUnit 2.2: February 19, 2017

将测试项目的目标框架更改为版本&gt; = 4.5.2对我有用。您不必更改您正在测试的项目版本,它只是测试项目本身。

答案 9 :(得分:5)

我使用的是xUnit 2.2.0。

我的问题是我的解决方案无法找到某些dll而app.config正在尝试解决它们。该错误未显示在Visual Studio的测试输出窗口中。

我在安装xunit.runner.console并尝试通过命令行运行测试时能够识别错误。

How to run xunit tests in CLI

答案 10 :(得分:3)

这也可能是由于未在构建配置中为当前平台项目选中构建复选框。 单击构建|配置管理器,然后确保测试项目在您正在使用的平台的构建列中打勾(例如&#39; x86&#39;)。

这绝对是对我有用的解决方案。

答案 11 :(得分:3)

确保您测试的课程是公开

答案 12 :(得分:3)

确保您没有在.NET Standard 2.0类库中编写单元测试。在撰写本文时,visualstudio runner不支持在netstandard2.0类库中运行测试。

测试运行者兼容性矩阵

Check here

https://xunit.github.io/#runners

答案 13 :(得分:2)

我长期遭遇这个问题。

  • 我有大约100个项目,不同的版本部署在不同的服务器上。

  • xunit 从2.2.0更新为2.3.1不是解决方案,因为2.3.1中的构建失败。

然后我刚刚将 xunit.runner.visualstudio 更新为 2.3.1 ,一切都开始正常了。 我在包管理器控制台中使用了这个命令来更新我的xunit.runner.visualstudio包

Get-Project ComapanyName.ProjectName.*.Tests | Install-Package xunit.runner.visualstudio -Version 2.3.1

答案 14 :(得分:2)

就我而言,我在解决方案中有两个不同的测试项目。可以找到项目1测试,但项目2测试不能。我发现首先卸载测试项目1,然后关闭VS&gt;清除我的临时文件&gt; <重新开放解决方案>重建,允许VS发现我的Project 2测试。

我假设两个测试项目之间必须存在冲突,这是让我在几分钟内启动并运行的最快方法。扭结可以在以后解决:)。

答案 15 :(得分:2)

与VS没有发现测试方法有类似的问题。在我的情况下,我使用方法的static关键字,我删除了它并且它工作。

[TestMethod]

Before: public static void Test1()

After: public void Test1()

答案 16 :(得分:1)

在我的情况下,我在同一个解决方案中有多个测试项目,并且只有一个项目没有显示&#34;测试资源管理器&#34;

我去了#34;管理Nuget Package for Solution&#34;右键单击解决方案。

我注意到&#34;巩固&#34;标签上有一些&#34;测试&#34;项目之间不同步的nuget包。我点击了&#34;安装&#34;我失踪的测试出现了。

答案 17 :(得分:1)

这是适用于我们的解决方案。不是最好的,但也许可以受益。

背景:

  • 我们的脚本是使用VS 2013开发的,并使用了NUnit VS Adapter 2.1 ..
  • 最近我们迁移到VS 2017,当打开相同的解决方案时 - 测试将不会显示在测试资源管理器

在构建时,我们会看到以下消息:

[Informational] NUnit Adapter 3.10.0.21: Test discovery starting
[Informational] Assembly contains no NUnit 3.0 tests: C:\ihealautomatedTests\SeleniumTest\bin\x86\Debug\SeleniumTest.dll
[Informational] NUnit Adapter 3.10.0.21: Test discovery complete

解决方案(临时):

  • 卸载NUnit Adapter 3.10 ...
  • 安装NUnit VS Adapter 2.1 ..

现在显示测试。

答案 18 :(得分:1)

我尝试了上面的大部分建议,没有任何效果。就我而言,我是一个团队,其他开发人员正在为相同的解决方案出现测试。所以,我试图删除我的.vs文件夹,但也没有运气。

我最终完全删除了我的本地文件夹并重新克隆了回购。这解决了我。

答案 19 :(得分:1)

免责声明:它不是关于xunit与visual studio 2015,而是Visual Studio 2017与UWP单元测试应用程序(MSTest)。我到这个线程搜索相同的东西,所以也许其他人也会这样做:)

我的解决方案是更新MSTest.TestAdapter和MSTest.TestFramework的nuget包。看来,当您为UWP创建单元测试应用时,您不会自动获得最新版本。

答案 20 :(得分:1)

当我在VS 2017中首次使用IntelliTest进行首次步行尝试时,我很高兴。

有时,当测试项目由IntelliTest自动创建时,程序集引用Microsoft.ExtendedReflection ... \ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ Extensions \ Microsoft \ Pex \ Microsoft.ExtendedReflection.dll )丢失。 添加后,生成的测试将在重新编译后显示在测试资源管理器中。

答案 21 :(得分:1)

最常见的罪魁祸首是Visual Studio尝试使用与其测试的库不同的架构来运行测试。不幸的是,有很多地方似乎会出错。

在VS 2017中,尝试创建一个运行设置文件,例如您的测试项目中的Default.runsettings。如果您的主lib是x64,则内容应为:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <RunConfiguration>
    <TargetPlatform>x64</TargetPlatform>
  </RunConfiguration>
</RunSettings>

然后从Test中选择此文件 - &gt;测试设置 - &gt;选择测试设置文件。

然后,在Test - &gt;下测试设置,默认处理器架构,再次选择正确的架构。

务必清理并构建整个解决方案。您可能需要关闭并重新打开“测试资源管理器”窗口。在输出中查找任何其他错误 - &gt;测试窗口,了解有关不正确架构类型的更多线索。

可以找到其他测试设置条目here

答案 22 :(得分:0)

我在Visual Studio 2019中遇到了相同的问题。只需安装以下NuGet程序包即可解决此问题。

1)。 xUnit

2)。 xunit.runner.visualstudio

3)。 Microsoft.TestPlatform.TestHost

4)。 Microsoft.NET.Test.Sdk

答案 23 :(得分:0)

  1. 关闭所有Visual Studio实例
  2. 转到%TEMP%\ VisualStudioTestExplorerExtensions \
  3. 删除与specrun相关的文件夹
  4. 再试一次

让我知道,谢谢

答案 24 :(得分:0)

安装nuget xunit.runner.visualstudio

解决了我的问题

答案 25 :(得分:0)

我有测试项目A和B.在项目A中进行了测试但发现但是发现从未停止过B.我必须手动杀死TestHost才能停止。

我做了很多这方面的事情甚至到了我不确定这是解决方案的问题。

现在它工作了,我所做的就是打开解决方案,而不是测试资源管理器。相反,我只是检查了输出窗口的测试,我可以看到发现过程结束,测试的数量等于A + B.在此之后,我打开了测试资源管理器,然后打开了A和B. 所以:

正确卸载并安装最新的xUnit内容。如上所述删除%temp%,添加NuGet包“Microsoft.TestPlatform.TestHost” 添加NuGet包“Microsoft.NET.Test.Sdk”,重新启动但只检查测试输出。如果它有效,你会看到

答案 26 :(得分:0)

I Cleared Temp,%Temp%和Prefetch。然后尝试重新打开VS并能够找到测试方法

答案 27 :(得分:0)

当您将VS2015移至VS2017以在测试资源管理器中进行发现测试时,您需要更新所有软件包。

答案 28 :(得分:0)

我的解决方案中有许多不同类型的项目,我无法运行Xunit测试项目。除了我的Xunit项目之外我卸载了所有这些,然后重新构建测试在visual studio中出现的解决方案,我可以运行它们。

答案 29 :(得分:0)

我不知道你们中的一些人是否也使用JustMock,但我必须在VS 2017中禁用探查器才能使测试检测工作。

答案 30 :(得分:0)

就我而言,我创建了一个新的“解决方案配置”,如图所示。因此,当我选择我的自定义作为“Prod”时,由于某种原因它不会识别TestMehods。改回“Debug”解决问题

enter image description here

答案 31 :(得分:0)

同时检查测试项目中是否有完全空的app.config文件(完全空白,绝对没有标记)。这是我案件中的罪魁祸首。

答案 32 :(得分:-1)

对我来说就是这么简单 - 包含测试方法的类必须公开。 :)

答案 33 :(得分:-1)

在属性窗口检查test.cs文件的类型,它是c#编译器。就我而言,我不小心将其更改为 embedresource 并遇到了此问题。

答案 34 :(得分:-2)

将您的测试课程设为公开,并在[TestClass]中添加注释