【问题标题】:Nunit System.BadImageFormatExceptionNunit System.BadImageFormatException
【发布时间】:2017-11-09 09:31:53
【问题描述】:

我在从命令行运行测试时遇到了一些问题。我有一个单独的测试项目,通常使用 Rider,测试运行完美。但是,我想在 CI 环境中运行它们,因此需要能够从命令行运行它们。

我正在尝试运行 项目名称>“C:\Program Files (x86)\NUnit.org\nunit-console\nunit3-console.exe”Test\Test.csproj NUnit 控制台运行器 3.4.0 版权所有 (C) 2016 查理普尔

Runtime Environment
   OS Version: Microsoft Windows NT 6.1.7601 Service Pack 1
  CLR Version: 4.0.30319.42000

Test Files
    Test\Test.csproj

Errors and Failures

1) Error : Test.MVCmodel.CoilClassTest.CoilCreateEmptyIdTest
System.BadImageFormatException : Could not load file or assembly 'UserInterface, Version=0.0.0.0, Culture=neutral,
PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format.
   at Test.MVCmodel.CoilClassTest.CoilCreateEmptyIdTest()

运行时也会发生同样的事情 "C:\Program Files (x86)\NUnit.org\nunit-console\nunit3-console.exe" Test\bin\Debug\Test.dll

测试项目位于 MainProject 内:Projectname\Projectname.csproj 和 Projectname\Test\Test.csproj

是的,我在 Stackoverflow 上找到了很多类似的帖子,但我没有找到适用的解决方案。

【问题讨论】:

  • 32 位进程与 64 位进程几乎可以肯定。确保针对正确类型的目标编译您的应用程序和测试项目。
  • 同意。这通常由 nunit 自动检测到 - 您使用的是相当旧版本的 nunit 控制台 - 我建议尝试最新版本。
  • 啊 - 我错过了你传递 csproj 而不是程序集。这也可能会影响自动识别的内容。有一个--x86 标志,如果你需要强制 x86
  • 是的,谢谢,--86 标志做到了。看来我的主项目和我的测试项目也有不同版本的 nunit....

标签: c# nunit-console


【解决方案1】:

这解决了我的问题。在构建设置下将平台目标更改为 x86

这当然是假设 UserInterface 存在并且在 CLI 环境之外运行良好(如在 Visual Studio 中)

【讨论】:

    猜你喜欢
    • 2013-02-09
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多