为什么 Visual Studio 2019 不会运行我的单元测试?

问题描述 投票:0回答:8

我在 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,并且我需要培训新开发人员如何解决这个奇怪的问题。

visual-studio nunit
8个回答
40
投票

我偶然发现了同样的问题。在我看来,每个版本我都必须安装越来越多的东西。 就我而言(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)

打开或关闭自动测试发现对我来说没有任何改变。

希望这对任何人都有帮助。


32
投票

解决方案是两件事的结合。

  1. 在顶部菜单上,导航到测试 > 选项并禁用“从 C# 和 Visual Basic .NET 源文件实时发现测试”。此选项似乎与参数化测试不兼容。问题在于参数化测试并不“存在”在源代码中,而是由测试适配器在运行时生成。这也解决了我看到的一个问题,即参数化测试的“基本”测试在测试资源管理器中显示为未运行的测试,即使只有特定的测试用例是真正的测试。 (在我看来,默认情况下不应启用此功能,因为参数化测试非常有用,而无需编译即可在测试资源管理器中查看新测试非常方便,因为无论如何您都必须编译才能运行它们。)

  2. 使用 NuGet 包作为测试适配器,而不是使用 VSIX 扩展。看来,对于这一部分,所需要做的就是您的解决方案中至少有一个项目引用了这一点。如果至少有一个项目引用它,则所有测试项目都可以运行。 (这对我来说很有意义,因为它与 Visual Studio 之外的构建工具更兼容。)

突破性改变万岁!


7
投票

我遇到了同样的问题,并通过检查日志记录解决了。

在“工具”->“选项”->“测试”->“常规”中,将“日志记录级别”设置为“诊断”。这将在输出窗口的测试输出窗格中产生额外的输出。

就我而言,该问题与缺少“.NET Core 3.1 Desktop Runtime”版本有关 您可以在 https://dotnet.microsoft.com/download/dotnet/thank-you/runtime-desktop-3.1.14-windows-x86-installer

下载最新版本

5
投票

就我而言,我还必须安装 Microsoft.NET.Test.Sdk nuget 包。


5
投票

以上都对我不起作用。

我刚刚安装了 xunit.runner.visualstudio nuget,现在一切正常。


0
投票

VS22 中的类似体验 - 将我的 NUnit3TestAdapter 更新到 4.4.2


0
投票

就我而言,我最近使用 VS 2019 创建了一个新的测试类,默认情况下将测试类设置为

internal
。删除
internal
并将测试类设置为
public
解决了它。


0
投票

我在 Visual Studio 上的本地计算机上运行测试时遇到类似的问题,以下解决方案解决了该问题,打开 Visual Studio,在“测试”->“选项”下,取消选中“从 C# 和 Visual Basic .NET 源文件实时发现测试”。重新启动 Visual Studio,并根据需要重新构建解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.