【问题标题】:Guidance for running tests using MSTest v1 in Visual Studio 2017 15.8.1在 Visual Studio 2017 15.8.1 中使用 MSTest v1 运行测试的指南
【发布时间】:2019-01-25 23:27:51
【问题描述】:

我上周升级到 Visual Studio 2017。一个使用 MSTest v1 的包含多个测试项目的解决方案起初似乎很好。大多数测试项目都能很好地执行测试。这是 .NET Framework,而不是 .NET Core。

但是,有一个项目我遇到了问题。这是一个集成测试项目,这意味着它使用 ChromeDriver 和 Selenium 运行 Web 应用程序测试。该项目引用了 NUnit,尽管该引用来自另一个项目引用。我实际上并没有使用 NUnit 作为我的测试框架。

这是尝试在该特定测试项目中运行任何测试时出现的错误: Could not find test executor with URI 'executor://mstestadapter/v1'. Make sure that the test executor is installed and supports .net runtime version . Test project {name} does not reference any .NET NuGet adapter. Test discovery or execution might not work for this project. It's recommended to reference NuGet test adapters in each test project in the solution.

禁用下面指示的选项使一切正常:

我在浏览https://docs.microsoft.com/en-us/visualstudio/releasenotes/vs2017-preview-relnotes#--visual-studio-2017-version-158-preview-4 的预览版本说明后找到了这个解决方案(向下滚动到“... 新功能...”,然后是 .NET 测试适配器扩展)。它提到了这个重大变化(尽管它没有破坏我的其他项目),但没有提到实际解决问题的方法。

当然,从长远来看,不选中该选项似乎不可行。所以我正在寻找有关如何进行的指导。

我已经尝试查看是否可以“快速”升级到 MSTest v2,但这有一个问题,因为找不到 System.Runtime 4.1.2。我尝试通过 NuGet 添加 System.Runtime 4.3.0,但这并没有解决问题。

【问题讨论】:

  • 您是否尝试过在项目中添加对 MSTest.TestAdapter 的 Nuget 引用?
  • @Mike 我做到了。我现在不记得随之而来的问题是什么,但它产生了更多的问题。我认为是因为该特定项目还引用了 NUnit(一些继承的依赖项)。
  • @SvenAelterman 我只是想感谢您发布这个问题。我的 Nunit 2.x 单元测试最近停止工作,恰逢将 Visual Studio 2017 Community 更新到 15.8.6。果然,在 Visual Studio (Tools > Options > Test > General) 中禁用“为了提高性能”复选框让他们再次工作。
  • 禁用主动解决方案选项解决了我这边的问题“找不到具有 URI 'executor://mstestadapter/v1' 的测试执行程序” - 使用 VS Enterprise 2017 V15.8.7 [昨天更新:) ]
  • 这是 Visual Studio 中一个非常愚蠢的错误。请投票解决这个问题:developercommunity.visualstudio.com/content/problem/319516/…

标签: visual-studio-2017 mstest


【解决方案1】:

我在运行 Xamarin.UITests 时遇到了类似的问题,并通过在 Visual Studio 中安装“NUnit 2 测试适配器”扩展来解决它。在 Visual Studio 2017 中,您可以从工具 > > 扩展和更新... > 在线 > 搜索“NUnit 适配器” > 单击 NUnit 2 测试适配器,然后单击下载按钮进行安装。提示完成安装时重新启动 Visual Studio。

【讨论】:

  • 要更清楚。将 NUnit Adapter 2 安装为插件。工具-->扩展和更新-->搜索NUnit适配器-->安装并重启visual studio。
  • 就我而言,我必须安装 NUnit 3 测试适配器,但这引导我朝着正确的方向前进。谢谢!
【解决方案2】:

了解此项目中如何引用 MSTest V1 框架程序集 (Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll) 会很有趣。上图中也最终被禁用的兼容性复选框应确保该项目具有 MSTestV1 测试并启用运行测试。如果不是,那么由于某种原因,检测逻辑被破坏并需要修复 - 关于如何引用程序集的 sn-p 将对此有所帮助。

关于迁移到 MSTest V2,这个博客应该会有所帮助:https://blogs.msdn.microsoft.com/devops/2016/06/17/taking-the-mstest-framework-forward-with-mstest-v2/。对于您似乎遇到的具体问题,repo 上的这个 github 问题听起来很相似:https://github.com/Microsoft/testfx/issues/184。

【讨论】:

    【解决方案3】:

    Caltor 的回答几乎为我解决了这个问题:这是我需要的 NUnit 适配器。但我遵循的步骤略有不同。它们适用于 VS 2019(但也可能适用于 VS 17):

    • 在解决方案资源管理器中右击我的项目下的References节点
    • 选择“管理 NuGet 包”
    • 点击浏览
    • 已搜索 nunit3testadapter
    • 在弹出的结果上点击安装

    对我来说,这个问题与 OP 的问题类似——适配器安装在某些项目上,但没有安装在其他项目上。但令人困惑的是,这在该项目的“参考”节点下并没有立即可见。该引用节点下与 nunit 相关的唯一节点是“nunit.framework”。因此,使用和不使用适配器的测试参考看起来是一样的。

    【讨论】:

    • 噗。我喜欢编程。谢谢你的步骤——这为我解决了:)
    • 不客气@velkoon。我也喜欢编程,但我不喜欢这种乏味的设置 c**p!
    【解决方案4】:

    “...但这有一个问题,因为找不到 System.Runtime 4.1.2。”

    我认为这是 app.config 中的一个设置,在更新项目设置时不会更新。我在 packages 文件夹下搜索 System.Runtime,然后更改了我的 app.config 以匹配我找到的内容,然后那个特定问题就消失了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-28
      • 1970-01-01
      • 1970-01-01
      • 2015-05-04
      • 2010-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多