【问题标题】:Visual Studio FsUnit test setup - Exception NUnit.Engine.NUnitEngineExceptionVisual Studio FsUnit 测试设置 - 异常 NUnit.Engine.NUnitEngineException
【发布时间】:2016-06-05 00:28:56
【问题描述】:

我使用的是 Visual Studio 2013,安装了 FsUnit 2.2.0,它需要 NUnit 3.2.1 和 FSharpCore 3.1。我创建了一个单独的测试项目,并在其中放置了一个测试装置和测试。我的平台是 x64 Win 10。配置用于“AnyCPU”和“调试”。我已经尝试过 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),那么基础项目的错误就会消失,但测试项目也会发生同样的事情。

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

【问题讨论】:

    标签: visual-studio-2013 nunit fsunit


    【解决方案1】:

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

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

    【讨论】:

    • 不确定我是否可以在 VS 2013 中回滚...我需要 nuget v3 才能发出 -version 选项,但 nuget CTP1 预览扩展似乎不再可用(@ 987654321@)。我想安装使用 NUnit 3.0 的 FsUnit v2.0.0,但我不知道该怎么做。
    • 没关系,它再次发现了单元测试,但是当我尝试“运行所有”时,我得到了同样的错误......
    • 我必须指定 CPU,从 x86 到 Any CPU。出于某种原因,当我的 Visual Studio 许可证需要续订时,它更改为 x86
    • 谢谢,由于 VS 2013 中的 nuget 没有版本选择,我所做的是下载适当的 nuget 版本文件(.nuget),为他们设置本地 nuget 源以导入它们。我正在使用 FsUnit 2.0.0; NUnit 3.0.1;用于 VS2012 到 2015 版本 3.0.8-ctp-8 的 Nunit 3.0 测试适配器 [确保允许安装“包含预发布”]
    【解决方案2】:

    我在Visual Studio 2017 中使用NUnit 3.9.NET Core 2.0 项目遇到了同样的问题,并且测试没有出现在TestExplorer 中。被这个卡住了很长一段时间。其他相关问题中建议的解决方案均无效。

    然后我从 this 链接中发现目标为.NET Standard 的类库不起作用。测试项目必须以.NET Core 为目标。此外,Microsoft.NET.Test.Sdk NuGet 是必需的。

    所以,步骤是

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

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


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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 我可以降级到更早的 NUnit 版本吗?或者您会建议什么解决方法?
      • 我尝试降级到多个其他版本,但仍然没有解决问题。那里有成功吗?
      • 您不需要降级您的 NUnit 版本,因为适配器包含它自己的引擎版本,并且在任何情况下都会使用它。如果这对您来说仍然是一个问题,请返回到 3.0 适配器 (3.0.10)。
      • 您可以继续使用 NUnit 3.2.1 进行控制台运行,例如,不使用 VS 适配器。并且 3.0.1 引擎(嵌入在 3.0.10 适配器中)应该能够处理引用 3.2.1 框架的测试。当然,如果您只使用适配器在 Visual Studio 中工作,那么按照另一个答案中的建议回滚所有内容可能更有意义。
      • 也谢谢您,您认为新的 NUnit 什么时候可以通过此修复获得?
      猜你喜欢
      • 1970-01-01
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      • 2016-09-06
      相关资源
      最近更新 更多