nunit 仅在 运行 作为 tfs msbuild 进程的一部分时测试抛出异常

nunit tests throwing exception only when run as part of tfs msbuild process

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

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

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

构建部分成功。

为了确保测试 运行,我在 Process[=] 中设置了 Disable Tests 属性 45=] 为假:

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

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

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

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

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

如果您安装了两个适配器,则每个适配器都将 运行 进行它们设计的测试。他们每个人都会为他们不支持的任何程序集显示一条消息。该消息并不意味着错误,我们尝试以不会被误认为是错误的方式来表达它。但是,我们觉得我们必须提供它,以防万一您希望该程序集由该特定适配器处理。默默的路过好像不对。

在VS IDE下运行ning时,消息不会导致测试失败运行。看来 TFS 下的 运行ning 确实会导致失败。如果没记错的话,我们已为 NUnit 3 适配器修复了此问题,但(尚未)为 NUnit 2 适配器修复了此问题。

找到这篇文章,但我自己没有测试过:

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

我遇到了完全相同的问题。我使用 NUnit 3.2.1,并安装了 NUnit 测试适配器 2.0 和 3.0。

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

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

通过 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 构建就可以完美执行。