测试未在测试资源管理器中运行

问题描述 投票:40回答:15

我目前正在开发一个目前有32个Unittests的解决方案。我一直在使用resharper测试运行器 - 工作正常。所有测试都在运行,所有测试都显示正确的测试结果。现在一位同事告诉我,使用Visual Studio测试资源管理器测试并没有在他的机器上运行。他们不在我的机器上工作,所以我可以排除一些本地丢失的文件或其他东西。

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

  • 所有测试类都是公开的
  • 所有测试类都声明了[TestClass]属性
  • 所有测试方法都使用[TestMethod]属性
  • 生产力代码和测试项目都针对.NET 3.5。
  • 我已经尝试清理构建我的解决方案,和/或删除所有objbinDebugRelease文件夹

我会谴责任何可能导致这种行为的提示。

visual-studio unit-testing visual-studio-2012 resharper
15个回答
81
投票

如果您的项目不是所有AnyCpu,那么您可能还需要检查以下2个设置是否匹配:

  1. [右键单击测试项目] - >属性 - >构建 - >平台目标 - 例如64位
  2. [主菜单] - >测试 - >测试设置 - >默认处理器架构 - > X64

我发现当这些不匹配时,我的测试项目会默默无法运行。


1
投票

这是测试项目没有标记要构建:

构建 - >配置管理器... - >检查测试项目的构建


1
投票

为我修复的是升级MS.Test nuget包


0
投票

对我来说,解决方案是将Resharper Unit Testing设置“Default platform architecture”更改为“x64”

enter image description here


0
投票

对我来说(不是一个解决方案)它取消选择菜单[测试] - > [测试设置] - > [{当前文件}]中的.testsettings文件来取消选中当前使用的文件。

在我的情况下,它开始如此。

<TestSettings name="Local (with code coverage)" id="e81d13d9-42d0-41b9-8f31-f719648d8d2d" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
  <Deployment>
    <DeploymentItem filename="ConfigurationImportExportTest\Configurations\" />
    <DeploymentItem filename="output\Debug\" />
  </Deployment>
  <Execution>

显然,DeploymentItem干扰了。

因为这是在输出选项卡中:

Warning: Test Run deployment issue: The assembly or module 'Microsoft.SqlServer.Management.SqlParser' directly or indirectly referenced by deployment item 'output\Debug\' specified by the test settings was not found.
.... more of the same

它并没有告诉我很多。 似乎它与所有项目将其编译产品放在一个常见的\output\Debug文件夹中的方式有​​关

然而,这似乎并不妨碍它。它提出了另一个警告,提到了类似的事情

A testsettings or runsettings file with `ForcedLegacyMode = TRUE or VSMDI files are not supported by MSTest-V2.

这似乎阻止了它。


0
投票

由于我遇到这种错误,我发布了我的问题/解决方案:

症状:

  • 并非所有测试都在运行,但它们并不依赖于每个项目,只是其中一些已经执行。
  • 所有执行的都是绿色的。
  • 技术堆栈:dotnet core / XUnit / FluentAssertions
  • 如果更改,则检测并更新所有测试。
  • 通过多次选择或运行“未运行的测试”,可以执行它们。

问题:

在另一个线程中抛出异常的代码中有一个错误。所有测试断言都已通过,但它取消了测试执行。我可以在“测试输出”(NullException)中看到错误。


0
投票

Check in your project file for references to NUnit of different versions:

在我的例子中,我已经安装了3.11.0NUnit的版本NUnit3TestAdapter,但是在项目文件中有旧版本的2.6.4引用,这些引用未通过新安装删除。

  • 解决方案(建议修复引用问题,请参阅docs): 重新安装NUnitNUnit3TestAdapter,这修复了我的项目中的引用。
PM> Update-Package NUnit -reinstall
...
PM> Update-Package NUnit3TestAdapter -reinstall
  • 解决方案2(如果重新安装没有修复引用): 卸载并安装NUnitNUnit3TestAdapter
PM> Uninstall-Package NUnit
...
PM> Uninstall-Package NUnit3TestAdapter
...
PM> Install-Package NUnit
...
PM> Install-Package NUnit3TestAdapter

0
投票

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

dotnet test

要解决此问题,您可以选择将所有依赖项复制到Test项目调试文件夹。这可确保可以解析任何装配,因为不会移除“未使用”的装配。您可以将以下内容添加到Test projects .csprog文件中:

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

0
投票

尝试从测试方法上方删除[Ignore]属性。


0
投票

我有不同版本的NUnit(3.11.0)和NunitTestAdapter(3.12.0)nuget包。当我将NUnit更新为3.12.0时,Visual Studio运行了测试。


38
投票

我在VS 2017中遇到了同样的问题。在我的情况下,它通过重新启动VS解决了。


13
投票

如果您使用的是NUnit而不是MSTest,那么您将需要用于Visual Studio 2012/2013的NUnit Test Adapter Extension


10
投票

我不得不改变我的异步测试方法以返回Task而不是void。

然后,测试在Test Explorer中处于活动状态并可运行。


6
投票

检查测试编写的框架(例如nunit,xunit,VS测试等),并确保安装了正确的测试适配器/运行器扩展。

对我来说,缺少NUnit 3测试适配器,我通过查看nunit.framework依赖版本确认了所需的版本号。


5
投票

在我的情况下,这是因为我的解决方案中的一个测试项目安装了MSTest.TestFramework和MSTest.TestAdapter nuget软件包,但其他测试项目没有安装。显然,在解决方案中的一个项目安装之前,这些软件包不需要运行测试。

通过在缺少它们的测试项目上安装这些软件包来解决该问题。


4
投票

Clean-Rebuild解决方案为我工作。


3
投票

我有同样的症状。

请确保通过工具 - 扩展和更新安装了正确的Visual Studio扩展。就我而言,我必须从Online选项安装XUnit和Specflow。

然后清理解决方案并重建它。

如果仍然没有帮助,请清除临时目录(在“开始”菜单搜索中搜索%temp%并删除Temp中的所有内容)

然后最后尝试卸载Resharper,最终解决了我的问题。


1
投票

对我来说重启VS2017没有用。我不得不清理sln,然后找到一个没有运行的测试文件,只运行该文件。在那之后,我确实运行了所有它再次正常工作。

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