为什么 Visual Studio 2019 不会 运行 我的单元测试?
Why will Visual Studio 2019 will not run my unit tests?
我在 VS2019 中看到 NUnit 测试有一些非常奇怪的行为,而同样的解决方案在 VS2017 中运行良好。我的soultion中有几个NUnit测试项目。
在安装了 NUnit Runner 扩展的 VS2017 中,我可以在测试资源管理器中看到我的所有测试 window,"run all" 按钮将起作用,运行 所有测试。我组织中的一些开发人员使用 Resharper 而不是 NUnit 扩展,这也有效。
我已经停止使用 Resharper,因为随着 VS 引入了更多功能,Resharper 变得非常慢以至于 VS 无法使用。
在 VS2019 中,测试资源管理器 window 将显示我所有的单元测试(即使没有安装 NUnit 扩展)。如果我点击 "run all" 它不会 运行 任何测试并且输出 window 会说发现了 0 个测试。同事们说 Resharper 将 运行 所有测试都没有问题。如果我右键单击单个测试项目并 运行 仅那些测试,一些项目将 运行 测试,但不是全部。
对于某些项目,我已尝试安装 NUnit3TestAdapater nuget 包,如果仅选择该项目,这将使 VS2019 运行 测试该项目。这不适用于所有项目,它仍然不适用于 "run all".
有谁知道可能导致此问题的原因以及可以解决的方法吗?我已经为所有这些项目更新到最新版本的 NUnit (3.12) 和最新版本的 TestAdapter (3.16)。
这真是痛苦了大约一年,因为我需要同时安装 VS2017 和 2019,而且我需要培训新开发人员如何解决这个奇怪的问题。
解决方案原来是两件事的结合。
在顶部菜单中,导航至 测试 > 选项 并禁用 "Discover tests in real time from C# and Visual Basic .NET source files"。此选项似乎与参数化测试不兼容。问题是参数化测试在源代码中没有 "exist",而是由测试适配器在 运行 时生成。这也解决了我看到的一个问题,即参数化测试的 "base" 测试在测试资源管理器中显示为非 运行 测试,即使只有特定测试用例是真实测试。 (在我看来,这不应该默认启用,因为参数化测试非常有用,而在测试资源管理器中看到新测试而不编译是一个微不足道的便利,因为无论如何你必须编译到 运行 它们。)
使用测试适配器的 NuGet 包而不是使用 VSIX 扩展。似乎对于这篇文章,所需要的只是您的解决方案中至少有一个项目引用了它。如果至少有一个项目引用它,则所有测试项目都可以运行。 (这对我来说很有意义,因为它与 Visual Studio 之外的构建工具更兼容。)
破坏性更改万岁!
我偶然发现了同样的问题。在我看来,我必须在每个版本中安装越来越多的东西。
就我而言(Visual Studio 2019 社区版,版本 16.6.1),我现在还必须通过 NuGet 获取 Microsoft.NET.Test.Sdk。
所以最后,我在我的测试项目中安装了三个包:
- NUnit (3.12.0)
- NUnit3TestAdapter (3.17.0)
- Microsoft.NET.Test.Sdk (16.7.1)
不过,打开或关闭自动测试发现对我来说没有任何改变。
希望这对任何人都有帮助。
在我的例子中,我还必须安装 Microsoft.NET.Test.Sdk nuget 包。
我遇到了同样的问题,通过检查日志记录解决了。
在工具->选项->测试->常规中将日志记录级别设置为诊断。这将在输出 window.
的测试输出窗格中产生额外的输出
在我的例子中,问题与缺少版本的“.NET Core 3.1 桌面运行时”有关
您可以在 https://dotnet.microsoft.com/download/dotnet/thank-you/runtime-desktop-3.1.14-windows-x86-installer
下载最新版本
在 none 以上对我有用之后。
我刚刚安装了 xunit.runner.visualstudio nuget,现在一切正常。
我在 VS2019 中看到 NUnit 测试有一些非常奇怪的行为,而同样的解决方案在 VS2017 中运行良好。我的soultion中有几个NUnit测试项目。
在安装了 NUnit Runner 扩展的 VS2017 中,我可以在测试资源管理器中看到我的所有测试 window,"run all" 按钮将起作用,运行 所有测试。我组织中的一些开发人员使用 Resharper 而不是 NUnit 扩展,这也有效。
我已经停止使用 Resharper,因为随着 VS 引入了更多功能,Resharper 变得非常慢以至于 VS 无法使用。
在 VS2019 中,测试资源管理器 window 将显示我所有的单元测试(即使没有安装 NUnit 扩展)。如果我点击 "run all" 它不会 运行 任何测试并且输出 window 会说发现了 0 个测试。同事们说 Resharper 将 运行 所有测试都没有问题。如果我右键单击单个测试项目并 运行 仅那些测试,一些项目将 运行 测试,但不是全部。
对于某些项目,我已尝试安装 NUnit3TestAdapater nuget 包,如果仅选择该项目,这将使 VS2019 运行 测试该项目。这不适用于所有项目,它仍然不适用于 "run all".
有谁知道可能导致此问题的原因以及可以解决的方法吗?我已经为所有这些项目更新到最新版本的 NUnit (3.12) 和最新版本的 TestAdapter (3.16)。
这真是痛苦了大约一年,因为我需要同时安装 VS2017 和 2019,而且我需要培训新开发人员如何解决这个奇怪的问题。
解决方案原来是两件事的结合。
在顶部菜单中,导航至 测试 > 选项 并禁用 "Discover tests in real time from C# and Visual Basic .NET source files"。此选项似乎与参数化测试不兼容。问题是参数化测试在源代码中没有 "exist",而是由测试适配器在 运行 时生成。这也解决了我看到的一个问题,即参数化测试的 "base" 测试在测试资源管理器中显示为非 运行 测试,即使只有特定测试用例是真实测试。 (在我看来,这不应该默认启用,因为参数化测试非常有用,而在测试资源管理器中看到新测试而不编译是一个微不足道的便利,因为无论如何你必须编译到 运行 它们。)
使用测试适配器的 NuGet 包而不是使用 VSIX 扩展。似乎对于这篇文章,所需要的只是您的解决方案中至少有一个项目引用了它。如果至少有一个项目引用它,则所有测试项目都可以运行。 (这对我来说很有意义,因为它与 Visual Studio 之外的构建工具更兼容。)
破坏性更改万岁!
我偶然发现了同样的问题。在我看来,我必须在每个版本中安装越来越多的东西。 就我而言(Visual Studio 2019 社区版,版本 16.6.1),我现在还必须通过 NuGet 获取 Microsoft.NET.Test.Sdk。
所以最后,我在我的测试项目中安装了三个包:
- NUnit (3.12.0)
- NUnit3TestAdapter (3.17.0)
- Microsoft.NET.Test.Sdk (16.7.1)
不过,打开或关闭自动测试发现对我来说没有任何改变。
希望这对任何人都有帮助。
在我的例子中,我还必须安装 Microsoft.NET.Test.Sdk nuget 包。
我遇到了同样的问题,通过检查日志记录解决了。
在工具->选项->测试->常规中将日志记录级别设置为诊断。这将在输出 window.
的测试输出窗格中产生额外的输出在我的例子中,问题与缺少版本的“.NET Core 3.1 桌面运行时”有关 您可以在 https://dotnet.microsoft.com/download/dotnet/thank-you/runtime-desktop-3.1.14-windows-x86-installer
下载最新版本在 none 以上对我有用之后。
我刚刚安装了 xunit.runner.visualstudio nuget,现在一切正常。