Visual Studio Test Explorer无法在已编译的测试项目中运行测试

时间:2019-02-28 00:25:03

标签: c# visual-studio-2017 mstest

我正在努力进行单元测试。我已经为这个问题努力了几个小时,而且我也没有解释为什么事情不起作用。我在我的代码库上进行了相当大的重构,此后经历并修复了所有单元测试。测试项目生成,它输出一个新的单元测试dll。但是,当我在测试浏览器中运行测试时,会收到以下消息:

  

[2/27/2019 5:08:05 PM警告] [MSTest] [发现] [C:\ pathtotest.dll]无法从程序集C:\ pathtotest.dll发现测试。原因:无法加载文件或程序集'System.Runtime,版本= 4.1.2.0,区域性=中性,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一。系统找不到指定的文件。

     

[2/27/2019 5:08:05 PM警告]没有测试与C:\ pathtotest.dll中的给定测试用例过滤器FullyQualifiedName=<namespace.namespace...testmethod>匹配

这就是我所知道的:

  • 我最近更新了Visual Studio(在过去两周内,我记不清是何时完成的。)

  • 测试项目中的所有软件包均已更新,并且正在运行最新版本的事物。

  • 我有另一个单元测试项目,即.Net Core 2.1,这是.Net Framework 4.7.2。另一个项目有效。

其他帖子提供的一些建议是,确保您的测试体系结构正确,并删除%TEMP%中的文件夹(不要记住确切的名称,除非是有关VisualStudioExtensions的名称)。他们建议删除的文件夹在%TEMP%中找不到,我尝试在两种体系结构上运行测试以得到相同的结果。

因此,下一步是进行健全性测试,并确保已构建的测试dll存在。是的。

在这一点上,我准备开始一个新的测试项目,并逐个复制粘贴到所有测试上,看看是否可能抛出一个静默错误。我自己的Google-fu技能找不到任何有用的信息,我希望有人能提供一些有用的见解或技巧。

3 个答案:

答案 0 :(得分:1)

来自上面的评论:

使用此C:\pathtotest.dll

还要检查它是否32bit or 64bit运行时。

大多数情况下都使用32bit dll。

希望有帮助

答案 1 :(得分:0)

在现有解决方案中,一个全新的测试项目存在一个类似的问题-我所有其他测试项目均已正确编译和测试,但是新的测试项目反复出现错误:

没有测试与给定的测试用例过滤器匹配...

答案来自这篇帖子VSTest: A testsettings file or a runsettings with a ForcedLegacyMode set to true is not supported with the MSTest V2 Adapter. No test is available,该帖子建议关闭testsettings文件,该文件已以某种方式在新项目中被选中。

在Visual Studio中取消选择“测试”->“测试设置”->“ c:... \ Repos ... testsettings”选项后,这些测试即可运行。

答案 2 :(得分:0)

就我而言,问题最终是混合了两种不同的测试引擎。我在使用 NUnit 时不经意间用 [TestMethod] (MSTest) 修饰了我的测试方法。一旦我将测试方法更改为仅 [Test] 并使用合适的测试运行程序,我终于开始营业了。