Visual Studio FsUnit 测试设置 - 异常 NUnit.Engine.NUnitEngineException

Visual Studio FsUnit test setup - Exception NUnit.Engine.NUnitEngineException

我使用的是Visual Studio 2013,安装了FsUnit 2.2.0,需要NUnit 3.2.1和FSharpCore 3.1。我创建了一个单独的测试项目并在其中放置了一个测试夹具和测试。我的平台是 x64 Win 10。配置适用于 'AnyCPU' 和 'Debug'。我已经尝试过 x86 和 x64 的测试设置。尝试构建和创建测试时,我得到:

------ Discover test started ------
NUnit Adapter 3.2.0.0: Test discovery starting
Exception NUnit.Engine.NUnitEngineException, Exception thrown discovering tests in C:\Users\Dad\Documents\Visual Studio 2013\Projects\...
Cannot run tests in process - a 32 bit process is required.
Exception NUnit.Engine.NUnitEngineException, Exception thrown discovering tests in C:\Users\Dad\Documents\Visual Studio 2013\Projects\...
Cannot run tests in process - a 32 bit process is required.
NUnit Adapter 3.2.0.0: Test discovery complete
========== Discover test finished: 0 found (0:00:00.1230077) ==========

如果我将测试项目和目标项目的配置都更改为 'x86'(而不是 AnyCPU),那么基础项目的错误就会消失,但测试项目也会发生同样的事情。

没有发现任何测试,请帮忙......非常感谢!

NUnit 3.2.1 中存在一个错误,据此 TestEngine 假定它无法 运行 需要 32 位执行的测试正在处理中。该假设对 NUnit 自己的 运行 用户始终有效,但当进程由其他程序启动时则不一定。有一个关于此的问题。

您需要从您的解决方案中删除 nunit,然后使用 "NUnit3TestAdapter" 重新安装它,版本 3.0.10 有效。

卸载 add/remove 程序和您的解决方案中的所有 NUnit 软件。现在使用 Nuget 包管理器(工具 > NuGet 包管理器 > 管理解决方案的 NuGet 包...)删除解决方案中的任何 NUnit 并安装旧版本(例如 3.0.1)。找到 "NUnit3TestAdapter" 并安装在版本 3.0.10.

我的 .NET Core 2.0 项目与 Visual Studio 2017 中的 NUnit 3.9 有同样的问题,并且测试没有出现在 TestExplorer 中。坚持了很长一段时间。 None 在其他相关问题中建议的解决方案有效。

然后我从 this link 中发现目标 .NET Standard 的 class 库不起作用。测试项目必须针对 .NET Core。此外,Microsoft.NET.Test.Sdk 需要 NuGet。

所以,步骤是

  1. 确保测试项目面向 .NET Core
  2. 安装最新的 NUnit NuGet(我用的是 3.9)
  3. 安装对应的NUnitAdapterNuGet(我用的是NUnit3Adapter)
  4. 安装Microsoft.NET.Test.Sdk NuGet

重新构建,您的测试将出现在 Test Explorer 中 Visual Studio。


注意:已将此答案添加到另一个 .NET Core 特定问题。也在这里添加,因为解决方案在这种情况下也可能有帮助。