Visual studio 为什么VisualStudio2019不会运行我的单元测试?

Visual studio 为什么VisualStudio2019不会运行我的单元测试?,visual-studio,nunit,Visual Studio,Nunit,我在VS2019中看到NUnit测试的一些非常奇怪的行为,在VS2017中同样的解决方案也可以很好地工作。我的解决方案中有几个NUnit测试项目 在安装了NUnit Runner扩展的VS2017中,我可以在测试资源管理器窗口中看到我的所有测试,“全部运行”按钮将工作并运行所有测试。我的组织中的一些开发人员使用Resharper而不是NUnit扩展,这也很有效 我已经停止使用Resharper,因为VS引入了更多的功能,Resharper的速度太慢以至于VS无法使用 在VS2019中,“测试资源

我在VS2019中看到NUnit测试的一些非常奇怪的行为,在VS2017中同样的解决方案也可以很好地工作。我的解决方案中有几个NUnit测试项目

在安装了NUnit Runner扩展的VS2017中,我可以在测试资源管理器窗口中看到我的所有测试,“全部运行”按钮将工作并运行所有测试。我的组织中的一些开发人员使用Resharper而不是NUnit扩展,这也很有效

我已经停止使用Resharper,因为VS引入了更多的功能,Resharper的速度太慢以至于VS无法使用

在VS2019中,“测试资源管理器”窗口将显示我的所有单元测试(即使没有安装NUnit扩展)。如果我单击“全部运行”,它将不会运行任何测试,并且输出窗口将显示发现0个测试。同事们说Resharper将毫无问题地运行所有测试。如果我右键单击单个测试项目并仅运行这些测试,则某些项目将运行测试,但不是全部

对于一些项目,我已经尝试安装Nunit3TestAdapter nuget包,如果仅选择该项目,这将允许VS2019运行该项目的测试。这并不适用于所有项目,也不适用于“全部运行”

有人知道这可能是什么原因吗?有什么办法可以解决?我已经为所有这些项目更新了NUnit(3.12)的最新版本和TestAdapter(3.16)


这真的是一年来的痛苦,因为我需要同时安装VS2017和2019,并且我需要培训新开发人员如何解决这个奇怪的问题。

解决方案是两件事的结合

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

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


  • 万岁,打破改变

    我偶然发现了同样的问题。在我看来,随着每个版本的发布,我必须安装越来越多的软件。 在我的情况下(Visual Studio 2019社区版,版本16.6.1),我现在还必须通过NuGet获得Microsoft.NET.Test.Sdk

    最后,我在测试项目中安装了三个软件包:

    • 努尼特(3.12.0)
    • NUnit3TestAdapter(3.17.0)
    • Microsoft.NET.Test.Sdk(16.7.1)
    但是,打开或关闭自动测试发现对我来说没有任何改变


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

    在我的情况下,我还必须安装Microsoft.NET.Test.Sdk nuget pack。

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

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

    在我的案例中,问题与“.NET Core 3.1桌面运行时”的缺失版本有关
    在以上所有内容都不适用于我之后,您可以在

    中下载最新版本


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

    Visual Studio团队在VS2019中放弃了对基于扩展的测试适配器的支持-请参见此处:。您对“run all”不起作用的问题并不熟悉,您是否尝试过删除扩展,只在相关项目中安装适配器NuGet软件包?如果是这样,我建议在nunit3与适配器GitHub repo之间提交一个问题。测试发现选项似乎只与参数化测试有关。我认为Microsoft.NET.Test.Sdk包是.NET核心项目的一个需求已经有一段时间了,但不是在.NET Framework上。您使用的是哪个版本?我有完全相同的设置,安装Microsoft.NET.Test.Sdk修复了我的问题。但是,NUnit的说明书中没有关于Ms.NET.Test.SDK的内容。无论如何,谢谢这对我运行VS2019社区有用,谢谢!我已经遵循了这个问题中的所有步骤,没有乐趣,测试不会被发现,而2019社区版只为我添加了NUnit3TestAdapter(NUnit已经安装)。不需要MS Sdk.re:
    #2
    哪个NuGet包?有那么多可供选择。@JesseChisholm可能
    NUnit3TestAdapter
    1。禁用“从C#和Visual Basic.NET源文件实时发现测试”有一定的改进(Visual Studio 2019,v16.8.2;xunit v2.4.1;xunit.runner.visualstudio v2.4.3),但仍然比Resharpers test Explorer慢得多,因为Resharper仍然领先,但自VS2017以来,我一直无法运行Resharper,因为它在所有其他方面都太慢了,而且无论如何,VS已经赶上了它的许多功能。