我目前正在开发一个目前有32个Unittests的解决方案。我一直在使用resharper测试运行器 - 工作正常。所有测试都在运行,所有测试都显示正确的测试结果。现在一位同事告诉我,使用Visual Studio测试资源管理器测试并没有在他的机器上运行。他们不在我的机器上工作,所以我可以排除一些本地丢失的文件或其他东西。
测试资源管理器显示所有单元测试,但是一旦单击“全部运行”,所有测试都将变为灰色并且不显示测试运行的结果:
[TestClass]
属性[TestMethod]
属性obj
,bin
,Debug
和Release
文件夹我会谴责任何可能导致这种行为的提示。
如果您的项目不是所有AnyCpu,那么您可能还需要检查以下2个设置是否匹配:
我发现当这些不匹配时,我的测试项目会默默无法运行。
这是测试项目没有标记要构建:
构建 - >配置管理器... - >检查测试项目的构建
为我修复的是升级MS.Test nuget包
对我来说(不是一个解决方案)它取消选择菜单[测试] - > [测试设置] - > [{当前文件}]中的.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.
这似乎阻止了它。
由于我遇到这种错误,我发布了我的问题/解决方案:
症状:
问题:
在另一个线程中抛出异常的代码中有一个错误。所有测试断言都已通过,但它取消了测试执行。我可以在“测试输出”(NullException)中看到错误。
在我的例子中,我已经安装了3.11.0
和NUnit的版本NUnit3TestAdapter,但是在项目文件中有旧版本的2.6.4
引用,这些引用未通过新安装删除。
NUnit
和NUnit3TestAdapter
,这修复了我的项目中的引用。PM> Update-Package NUnit -reinstall
...
PM> Update-Package NUnit3TestAdapter -reinstall
NUnit
和NUnit3TestAdapter
。PM> Uninstall-Package NUnit
...
PM> Uninstall-Package NUnit3TestAdapter
...
PM> Install-Package NUnit
...
PM> Install-Package NUnit3TestAdapter
对我来说,这是由用于测量代码覆盖率的VS扩展引起的。它无法引用特定的程序集,因此不会运行任何测试。使用以下命令从命令行运行测试:
dotnet test
要解决此问题,您可以选择将所有依赖项复制到Test项目调试文件夹。这可确保可以解析任何装配,因为不会移除“未使用”的装配。您可以将以下内容添加到Test projects .csprog文件中:
<PropertyGroup>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>
尝试从测试方法上方删除[Ignore]
属性。
我有不同版本的NUnit(3.11.0)和NunitTestAdapter(3.12.0)nuget包。当我将NUnit更新为3.12.0时,Visual Studio运行了测试。
我在VS 2017中遇到了同样的问题。在我的情况下,它通过重新启动VS解决了。
如果您使用的是NUnit而不是MSTest,那么您将需要用于Visual Studio 2012/2013的NUnit Test Adapter Extension。
我不得不改变我的异步测试方法以返回Task而不是void。
然后,测试在Test Explorer中处于活动状态并可运行。
检查测试编写的框架(例如nunit,xunit,VS测试等),并确保安装了正确的测试适配器/运行器扩展。
对我来说,缺少NUnit 3测试适配器,我通过查看nunit.framework依赖版本确认了所需的版本号。
在我的情况下,这是因为我的解决方案中的一个测试项目安装了MSTest.TestFramework和MSTest.TestAdapter nuget软件包,但其他测试项目没有安装。显然,在解决方案中的一个项目安装之前,这些软件包不需要运行测试。
通过在缺少它们的测试项目上安装这些软件包来解决该问题。
Clean-Rebuild
解决方案为我工作。
我有同样的症状。
请确保通过工具 - 扩展和更新安装了正确的Visual Studio扩展。就我而言,我必须从Online选项安装XUnit和Specflow。
然后清理解决方案并重建它。
如果仍然没有帮助,请清除临时目录(在“开始”菜单搜索中搜索%temp%并删除Temp中的所有内容)
然后最后尝试卸载Resharper,最终解决了我的问题。
对我来说重启VS2017没有用。我不得不清理sln,然后找到一个没有运行的测试文件,只运行该文件。在那之后,我确实运行了所有它再次正常工作。