Тесты NUnit в отдельном проекте, то же решение - PullRequest
5 голосов
/ 29 июня 2009

У меня есть решение, содержащее мой основной проект и тестовый проект с использованием NUnit. Все компилируется, но когда я запускаю NUnit, я получаю исключение ниже после загрузки тестов, и тесты не проходят. Я добавил основной проект в качестве ссылки, и у меня есть $ (ProjectDir) bin / Debug / $ (TargetName) $ (TargetExt) в аргументах для NUnit в настройке внешних инструментов, с пустым начальный каталог.

MyMainProjectTests.Database.TestAddDelete:   
System.BadImageFormatException : Could not load file or assembly 'MyMainProject, 
    Version=1.1.1.0, Culture=neutral, PublicKeyToken=null' or one of its 
    dependencies. An attempt was made to load a program with an incorrect format.
TearDown : System.Reflection.TargetInvocationException : Exception has been 
    thrown by the target of an invocation.
  ----> System.BadImageFormatException : Could not load file or assembly 
    'ChickenPing, Version=1.1.1.0, Culture=neutral, PublicKeyToken=null' or one 
    of its dependencies. An attempt was made to load a program with an incorrect 
    format.

После часового поиска единственное, что я обнаружил, это ошибка в VS2005, в которой упоминаются каталоги / bin и / obj, но предоставленный ответ не помог.

Какие-нибудь решения?

Ответы [ 6 ]

15 голосов
/ 29 июня 2009

Вместо того, чтобы настроить NUnit в качестве внешнего инструмента, я установил проект модульного теста как проект StartUp. На экране свойств проекта установите для параметра «Действие запуска» значение «Запустить внешнюю программу» и укажите для него значение nunit.exe. В разделе «Параметры запуска» я указываю тестовую сборку (без указания пути) в поле «Аргументы командной строки». На этом этапе просто нажмите F5 , чтобы запустить NUnit.

11 голосов
/ 30 сентября 2011

Используйте nunit-x86.exe вместо nunit.exe в качестве вашего бегуна.

Лучшим долгосрочным решением может быть приобретение ReSharper, который включает в себя гораздо более приятный инструмент для тестирования NUnit, который полностью интегрируется в Visual Studio. Он автоматически определяет тип проекта .NET (x68 или x64). ReShaper поставляется с тоннами других функций , из которых модульное тестирование является лишь одним. Их тестер также интегрируется с анализатором покрытия кода DotCover .

Возможно, вам понадобится более поздняя версия Visual Studio для использования ReSharper. Последняя версия работает с Visual Studio 2013 Community Edition , которую вы можете получить бесплатно, хотя, как я понимаю, у вас могут возникнуть проблемы с обновлением некоторых функций проекта из такого довольно старого проекта VS2005.

Я не имею никакого отношения к ReSharper.

7 голосов
/ 29 июня 2009

Вы работаете на x64? Вы получите эту ошибку, если загрузите бит x64 из x86 и наоборот. Кроме того, путь, который вы пытаетесь создать, должен быть макросом $ (TargetPath).

5 голосов
/ 02 января 2012

Просто установите «Цель платформы» проекта «Тесты» на «x86».

0 голосов
/ 08 января 2014

Перейдите в папку установки NUnit (пример: C: \ Program Files (x86) \ NUnit 2.6.3 \ bin) и откройте nunit-86.exe.

0 голосов
/ 29 июня 2009

Ваш основной проект - .exe или .dll? Более старые версии .NET не могли ссылаться на .exe, поэтому проблема может быть .

В любом случае, я ожидаю проблем, если основная сборка не окажется где-то доступной для вашей тестовой сборки (например, в том же каталоге). Вы можете проверить это, а если нет, то, возможно, с помощью Visual Studio скопируйте ссылочную (основную) сборку в локальный каталог.

Была сделана попытка загрузить программу с неверным форматом. меня интересует, верна ли теория «отсутствующей сборки», но без дополнительной информации это лучшее предположение, которое я могу придумать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...