Nunit System.BadImageFormatException

У меня проблемы с запуском тестов из командной строки. У меня есть отдельный проект для тестов, и я обычно использую Rider, где тесты проходят безупречно. Однако я хочу запускать их в среде CI, и поэтому мне нужно иметь возможность запускать их из командной строки.

Я пытаюсь запустить Projectname> «C: \ Program Files (x86) \ NUnit.org \ nunit-console \ nunit3-console.exe» Test \ Test.csproj NUnit Console Runner 3.4.0 Copyright (C) 2016 Charlie Poole

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, но я не нашел подходящего решения.


person timedistance    schedule 09.11.2017    source источник
comment
Почти наверняка 32-битный процесс против 64-битного. Убедитесь, что ваше приложение и тестовый проект скомпилированы для правильного типа цели.   -  person Lasse V. Karlsen    schedule 09.11.2017
comment
Согласовано. Обычно это автоматически обнаруживается nunit - вы используете довольно старую версию консоли nunit - я бы рекомендовал попробовать последнюю версию.   -  person Chris    schedule 09.11.2017
comment
Ах, я пропустил, что вы передаете csproj вместо сборки. Это также может повлиять на то, что распознается автоматически. Есть флаг --x86, если вам нужно заставить x86   -  person Chris    schedule 09.11.2017
comment
Да, спасибо, флаг -86 сделал это. Кажется, у меня также были разные версии nunit для моего основного проекта и моего тестового проекта ....   -  person timedistance    schedule 09.11.2017


Ответы (1)


Это решило проблему для меня. В настройках сборки измените целевую платформу на x86

введите здесь описание изображения

Это, конечно, предполагает, что UserInterface существует и работает вне среды CLI (например, в Visual Studio).

person love2code    schedule 31.10.2019