Как запустить модульные тесты на платформе x64?
У меня есть приложение на C#, которое должно работать в режиме x64. Проблема в том, что я пытаюсь создать модульные тесты, которые выполняют методы этого x64 приложения, но проект с тестами не собирается. При попытке сборки я получаю следующую ошибку:
Ошибка загрузки C:.....\bin\x64\Debug....UnitTests.dll: Не удалось загрузить
тестовый контейнер 'C:.....\bin\x64\Debug....UnitTests.dll' или одну
из его зависимостей. Если вы собираете сборку проекта теста как 64-битную,
она не может быть загружена. При сборке сборки вашего проекта тестов
выберите "Any CPU" для платформы. Чтобы запустить ваши тесты в 64-битном
режиме на 64-битном процессоре, вы должны изменить настройки тестирования на
вкладке Hosts, чтобы запускать ваши тесты в 32-битном процессе.
Сведения об ошибке:
Не удалось загрузить файл или сборку
'file:///C:.....UnitTests\bin\x64\Debug....UnitTests.dll' или одну из
его зависимостей. Попытка загрузить программу с
неправильным форматом.
Я пытался изменить модульные тесты на x64, а также на Any CPU, но так и не смог их запустить. Есть ли какое-нибудь решение этой проблемы?
5 ответ(ов)
Предполагаю, что вы используете тестовый фреймворк Visual Studio, так как не упоминаете ничего другого. В Visual Studio 2010 вы можете заставить тестовый хост работать в режиме x64. Для этого соберите свои сборки как Any CPU или x64, а затем установите тестовый хост на x64.
Ссылка для дополнительной информации: http://msdn.microsoft.com/en-us/library/ee782531.aspx
У меня была похожая проблема. В Visual Studio 2010 (в режиме x64) возникает странная ошибка, из-за которой целевой процессор может измениться при добавлении нового проекта в существующее решение. Убедитесь, что все ссылки и целевые платформы действительно установлены на x64.
Для пользователей nunit3, предпочитающих использовать команду dotnet test
, это решение подходит как для проектов на .NET Core, так и на .NET Framework:
dotnet test -- RunConfiguration.TargetPlatform=x64
Эта команда позволяет указать платформу x64 при запуске тестов, что может быть полезно для обеспечения совместимости и корректной работы тестов в вашем проекте.
Вам нужно установить все ссылки в проекте тестирования на локальные (установить значение на true). Я сталкивался с этой проблемой ранее, надеюсь, что это сработает и для вас (я использую Windows 7 64-бит и VS2012).
Эта ошибка может быть исправлена, если вы очистите и пересоберете все соответствующие сборки. Видимо, один из файлов поврежден неожиданно.
Одно из улучшений для Visual Studio — это при обнаружении исключения неправильного формата сообщать имя файла. Тогда разработчик сможет пересобрать только этот файл.
В C# в чем разница между public, private, protected и отсутствием модификатора доступа?
Не удается обновить EntitySet: определен DefiningQuery, но отсутствует элемент <UpdateFunction>
Лучшая настройка непрерывной интеграции для одиночного разработчика (.NET) [закрыт]
"Ошибка при выполнении криптографической операции при расшифровке cookie Forms"
Использование номера версии веб-приложения из сборки (ASP.NET/C#)