我在VS2019中看到了NUnit测试的一些非常奇怪的行为,其中相同的解决方案在VS2017中可以正常工作。我的灵魂中有几个NUnit测试项目。
在安装了NUnit Runner扩展程序的VS2017中,我可以在“测试资源管理器”窗口中看到所有测试,并且“全部运行”按钮将起作用并运行所有测试。我组织中的某些开发人员使用Resharper而不是NUnit扩展,这也可以。
我已经停止使用Resharper了,因为随着VS引入了更多功能,Resharper使其变得如此缓慢以至于VS无法使用。
在VS2019中,“测试资源管理器”窗口将显示我的所有单元测试(即使未安装NUnit扩展)。如果单击“全部运行”,它将不运行任何测试,并且“输出”窗口将显示已发现0个测试。同事们说,Resharper将无问题地运行所有测试。如果我右键单击一个测试项目并仅运行那些测试,则某些项目将运行测试,但不是全部。
对于某些项目,我尝试安装NUnit3TestAdapater nuget软件包,如果仅选择了该项目,这将使VS2019运行该项目的测试。这不适用于所有项目,也不适用于“全部运行”。
有人知道这是什么引起的,什么可以解决?对于所有这些项目,我已经更新到最新版本的NUnit(3.12)和最新的TestAdapter(3.16)。
这已经大约一年了,因为我需要同时安装VS2017和2019,并且需要培训新开发人员如何解决这个奇怪的问题。
答案 0 :(得分:11)
结果证明这是两件事的结合。
在顶部菜单上,导航到 Test> Options 并禁用“从C#和Visual Basic .NET源文件实时发现测试”。此选项似乎与参数化测试不兼容。问题在于,参数化测试不在源代码中“存在”,而是由测试适配器在运行时生成的。这也解决了我已经看到的一个问题,即使只有特定的测试用例是真实的测试,参数化测试的“基础”测试仍在测试资源管理器中显示为未运行测试。 (在我看来,默认情况下不应启用此功能,因为参数化测试非常有用,而无需编译即可在测试资源管理器中查看新测试非常方便,因为您必须始终进行编译才能运行它们。)
使用NuGet包作为测试适配器,而不是使用VSIX扩展。看来,对于本文而言,所需要做的就是解决方案中至少有一个项目引用了此项目。如果至少有一个项目引用了该项目,则可以运行所有测试项目。 (这对我来说很有意义,因为它与Visual Studio外部的构建工具更加兼容。)
万事大吉!
答案 1 :(得分:4)
我偶然发现了同样的问题。在我看来,每个版本都必须安装越来越多的软件。 就我而言(Visual Studio 2019社区版,版本16.6.1),我现在还必须通过NuGet获得Microsoft.NET.Test.Sdk。
所以最后,我在测试项目中安装了三个软件包:
打开或关闭自动测试发现对我来说并没有任何改变。
希望这对任何人都有帮助。
答案 2 :(得分:2)
我遇到了同样的问题并通过检查日志解决了。
在工具->选项->测试->常规中将日志级别设置为诊断。这将在输出窗口的测试输出窗格中产生额外的输出。
就我而言,问题与“.NET Core 3.1 桌面运行时”版本缺失有关 您可以在 https://dotnet.microsoft.com/download/dotnet/thank-you/runtime-desktop-3.1.14-windows-x86-installer
下载最新版本答案 3 :(得分:0)
就我而言,我还必须安装 Microsoft.NET.Test.Sdk nuget 包。
答案 4 :(得分:0)
以上都对我不起作用。
我刚刚安装了 xunit.runner.visualstudio nuget,现在一切正常。