【问题标题】:Visual Studio Test Explorer cannot run tests in compiled test projectVisual Studio 测试资源管理器无法在编译的测试项目中运行测试
【发布时间】:2021-12-07 12:57:50
【问题描述】:

我正在努力让我的单元测试正常工作。我已经为这个问题挣扎了几个小时,但我无法解释为什么事情不起作用。我对我的代码库进行了相当大的重构,并且已经完成并修复了所有单元测试。测试项目构建,它输出一个新的单元测试 dll。但是,当我在测试资源管理器中运行测试时,我收到以下消息:

[2/27/2019 5:08:05 PM 警告] [MSTest][Discovery][C:\pathtotest.dll] 无法从程序集 C:\pathtotest.dll 中发现测试。原因:无法加载文件或程序集 'System.Runtime, Version=4.1.2.0, Culture=neutral, 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 技能找不到任何有用的信息,我希望有人能提供一些有用的见解或技巧来尝试。

【问题讨论】:

  • 检查每个 dll 是否包含。这是你的问题C:\pathtotest.dll。这个 dll 是否与其他 dll 有依赖关系?
  • 您在这个项目中有哪些 nuget?你有 runner nuget 吗?
  • 不完全确定你在问什么@Baruch。当我最初创建项目时,它只是一个 .Net Framework MSTest 项目。

标签: c# visual-studio-2017 mstest


【解决方案1】:

来自上面的评论:

使用这个C:\pathtotest.dll

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

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

希望对你有帮助

【讨论】:

  • 我为这个单元测试提供了三个参考项目。两个是.Net Framework 4.7.2,一个是.Net Standard 2.0。它们都配置为构建为“任何 CPU”,未选中“首选 32 位”。正如我所说,它曾经运行过,我唯一做的就是重构单元测试中使用的一些方法,然后更新单元测试以允许它再次构建。根据您的第一条评论,我还检查并确保所有引用的项目都作为 .dlls 包含在构建目录中。我尝试同时运行 32 位和 64 位,但没有成功。我可能会以这个速度重新制作这个项目。
【解决方案2】:

我在现有解决方案中的全新测试项目中遇到了类似问题 - 我的所有其他测试项目都正确编译和测试,但新项目反复出现错误:

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

答案来自这篇帖子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 选项,测试就可以运行了。

【讨论】:

  • 我没有看到这个选项:测试 -> 测试设置 -> c:...\Repos...testsettings 选项....没有测试设置
【解决方案3】:

就我而言,问题最终是两种不同测试引擎的混合。当我使用 NUnit 时,我无意中用 [TestMethod] (MSTest) 修饰了我的测试方法。一旦我将我的测试方法改为 [Test] 并使用了合适的测试运行器,我终于开始做生意了。

【讨论】:

    【解决方案4】:

    我遇到了类似的问题。就我而言,问题在于返回类型。 测试方法需要使用async,但返回类型是void而不是Task。简单而小的认为可能会吃很多时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-15
      相关资源
      最近更新 更多