【问题标题】:nunit tests throwing exception only when run as part of tfs msbuild processnunit 仅在作为 tfs msbuild 进程的一部分运行时才测试抛出异常
【发布时间】:2016-05-13 11:53:35
【问题描述】:

我正在使用 TFS 2012 从 Visual Studio 2015 构建和部署解决方案,没有任何问题。我决定将我的单元测试作为构建过程的先决条件的一部分。

独立于 msbuild 过程,单元测试运行没有问题并成功;但是,当我将它们合并为构建过程的一部分时,我的构建中出现以下异常:

Exception NUnit.Core.UnsupportedFrameworkException, Exception thrown executing tests in D:\Builds\4\PA1111CE\Dev1111dBus\bin\mmmTests.dll
 No test is available in D:\Builds\4\PA1111CE\Dev1111dBus\bin\mmmTests.dll. Make sure that installed test discoverers & executors, platform & framework version settings are appropriate and try again.

构建部分成功。

为了确保运行测试,我已将 Process 中的 Disable Tests 属性设置为 false:

除此之外,我还为自动化测试设置了选项:

唯一可用的测试运行器如下:

另外,根据我的扩展和更新,这表明我确实安装了 nunit 适配器 3:

我做错了什么? 为什么我的构建只能部分成功?

【问题讨论】:

  • 我遇到了同样的错误...你解决了吗?
  • 您使用的是哪个 NUnit 框架版本和测试适配器版本?
  • 您的测试项目在项目属性中针对哪个版本的 .NET 框架?构建部分成功,因为虽然构建成功,但单元测试却没有。

标签: c# visual-studio tfs msbuild nunit


【解决方案1】:

该消息表明您正在尝试使用错误的 Visual Studio 适配器运行 NUnit 测试。将 2.0 适配器用于 NUnit 2.x 测试,将 3.0 适配器用于 NUnit 3.0 测试。

如果您安装了两个适配器,每个适配器都将运行它们设计的测试。他们每个人都会在他们不支持的任何程序集中显示一条消息。该消息并不意味着是错误,我们尝试以不会被视为错误的方式对其进行措辞。但是,我们认为我们必须提供它,以防万一您希望该组件由该特定适配器处理。默默地通过它似乎是错误的。

在VS IDE下运行时,该消息不会导致测试运行失败。看来在 TFS 下运行确实会导致失败。如果有记忆,我们会为 NUnit 3 适配器解决此问题,但(尚未)为 NUnit 2 适配器解决此问题。

【讨论】:

  • charlie 谢谢你,请看我添加到这篇文章中的图片,这表明 nunit 测试运行器不可用
  • @Charlie,我和 Engern 有同样的问题。我安装了 NUnit 3.2.1,但 NUnitTestAdaptor.2.0.0 在我的“包”文件夹中。在哪里可以找到适用于 VS 2013 的正确 3.2.1 适配器?
  • 如果您添加 NUnit3TestAdapter 包,该错误应该会消失。
  • 作为参考,我们的项目安装了 2.x 和 3.x 测试适配器。这导致所有测试正常运行,并因此错误而失败。删除 2.x 测试适配器解决了这个问题。
  • 我更新了我的答案以处理安装了两个适配器的情况。
【解决方案2】:

通过 NuGet 使用 NUnit 3 时,我在构建服务器上遇到了同样的问题。我从 Visual Studio 中卸载了 NUnit 2 和 3 测试适配器,并从机器上卸载了 NUnit 2。我仍然有问题。

在我的情况下,问题是由隐藏在 4 个 NUnit2 DLL 引起的:

C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\Extensions

一旦它们被删除,TFS 构建就会完美执行。

【讨论】:

    【解决方案3】:

    我也有同样的问题。我使用 NUnit 3.2.1,并安装了 NUnit 测试适配器 2.0 和 3.0。

    我不知道如何切换适配器,所以我禁用了 2.0 的。现在我没有收到任何错误(即使它只是像你这样的消息 - 测试通过/失败,因为它们应该有)。

    要禁用 2.0 测试适配器(也可能安装 3.0):工具 -> 扩展和更新 -> 搜索或找到 Nunit 2.0 并单击禁用或卸载。

    【讨论】:

    • 是的,这很重要,但是您是如何禁用 2.0 的呢?通过 Visual Studio?
    【解决方案4】:

    找到这篇文章,但我自己没有测试过:NUnit failed to load in TFS build

    我最终暂时将我的单元测试项目从构建like described here 中排除了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-15
      • 2012-08-07
      • 2014-12-26
      相关资源
      最近更新 更多