我目前正在开发一个有32个单元测试的解决方案。我一直在使用resharper测试运行器-它工作得很好。所有测试都在运行,所有测试都显示正确的测试结果。

但是,在使用Visual Studio测试资源管理器时,测试未运行。

测试资源管理器正在显示所有单元测试,但一旦单击“全部运行”,所有测试都将变成灰色,并且不显示测试运行的结果:

所有测试类都是公共的 所有测试类都声明了[TestClass]属性 所有测试方法都使用[TestMethod]属性 生产力代码和测试项目都是针对。net 3.5的。 我已经尝试清洁构建我的解决方案,和/或删除所有obj, bin,调试和发布文件夹

我很感激任何能解释这种行为的提示。


当前回答

在我的情况下,我有一个async void方法,我用async任务替换,所以测试运行如我所料:

    [TestMethod]
    public async  void SendTest(){}

替换为:

    [TestMethod]
    public async  Task SendTest(){}

其他回答

我在vs2022中遇到了同样的问题,但测试结果并不是模糊的,而是在运行后测试消失了。同样,在Test Explorer中没有显示任何结果。

我可以看到所有测试都在“输出”窗口中工作,但在“测试资源管理器”窗口中没有显示任何测试。

在我的情况下,重新安装vs2022解决了问题。

I found that in the project it was not referencing the Microsoft.VisualStudio.QualityTools.UnitTestFramework assembly. Instead, it was referencing Microsoft.VisualStudio.TestPlatform.TestFramework and Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions. When I removed those two references and added the reference to the Microsoft.VisualStudio.QualityTools.UnitTestFramework assembly the tests that were previously marked with the blue exclamation point suddenly became active and started working.

检查你的项目文件中不同版本的NUnit的引用:

在我的例子中,我已经安装了NUnit和NUnit3TestAdapter的3.11.0版本,但是在项目文件中有对2.6.4版本的旧引用,这些引用没有随着新的安装被删除。

解决方案(建议修复引用问题,请参阅文档): 重新安装NUnit和NUnit3TestAdapter,这修复了我的项目中的引用。

PM> Update-Package NUnit -reinstall
...
PM> Update-Package NUnit3TestAdapter -reinstall

解决方案2(如果重新安装没有修复引用): 卸载并安装NUnit和NUnit3TestAdapter。

PM> Uninstall-Package NUnit
...
PM> Uninstall-Package NUnit3TestAdapter
...
PM> Install-Package NUnit
...
PM> Install-Package NUnit3TestAdapter

对我来说,这是由测量代码覆盖率的VS扩展引起的。它不能引用特定程序集,因此不会运行任何测试。使用以下命令行可以很好地运行测试:

dotnet test

要解决这个问题,您可以选择将所有依赖项复制到Test项目调试文件夹中。这可以确保任何程序集都可以解析,因为“未使用的”程序集不会被删除。您可以在测试项目的.csprog文件中添加以下内容:

<PropertyGroup>
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>

我在VS 2017也遇到了同样的问题。在我的例子中,它通过重新启动VS来解决。