MSTest отказывается запускать 64-битный?
Я пишу тесты для приложения, использующего Outlook Redemption, который должен обязательно выполнять 64-разрядные (он подключается к окнам MAPI и Outlook x64). К сожалению, я не могу на всю жизнь заставлять его запускать тест в 64-битном режиме. Я попытался использовать файл .runsettings
(отредактирован для указания 64-битного) и файл .testsettings
(также отредактирован), и, наконец, я выбрал Test>TestSettings>Default Processor Architecture>64-bit
, но безрезультатно.
Каждый раз System.Environment.Is64BitProcess является ложным, и когда я загружаю dll для подключения к Outlook и MAPI, я получаю ужасный COM-исключение: Wrong OS or OS version for application (Exception from HRESULT: 0x800401FA (CO_E_WRONGOSFORAPP))
что указывает на то, что Установлен 64-разрядный Outlook, и процесс, пытающийся получить к нему доступ, 32-разрядный.
Я перезапустил VS 2012 после внесения изменений настроек, поскольку я где-то читал, что может потребоваться перезагрузка. У кого-нибудь есть другие предложения? Я мог бы просто написать это как консольное приложение, которое запускает неформальные тесты и сообщает о своем статусе, но мой следующий шаг - интегрировать эти тесты в автоматическую сборку. Любая помощь будет принята с благодарностью.
редактировать
Снимок экрана страницы настроек узла в.testsettings ![enter image description here]()
эксперимент
Интересно, что я сделал небольшой эксперимент. Я создал новое решение с одним проектом консольного приложения. Я поставил там общедоступный метод, который просто вернул true. Когда я запустил консольное приложение и приостановил выполнение, я посмотрел и действительно работает 64-битный; проблем нет. Затем я добавил тестовый проект, создав один тест, который называется методом. Я также добавил var is64 = Environment.Is64bitProcess
и поставил после него var is64 = Environment.Is64bitProcess
останова.
Как и ожидалось, без изменения каких-либо параметров is64 был ложным. Я выбрал 64-битную архитектуру по умолчанию из раскрывающегося списка, затем очистил решение и снова проверил тест, тот же результат, 32-разрядный. Я перезапустил VS2012, очистил, построил, тот же результат. Я создал файл testettings и ссылался на него в меню Test, чистая сборка, то же самое, перезагрузка, очистка, сборка. Я создал файл runsettings, установил <TargetPlatform>x64</TargetPlatform>
, ссылаясь на то, что в тестовом меню снова пробежал все это и получил те же результаты. QTAgent32.exe продолжает запускать этот процесс и абсолютно отказывается прислушиваться к моим требованиям о том, чтобы он выполнял 64 бит.
Клянусь, если мне нужно удалить QTAgent32.exe и переименуйте QTAgent на это имя, я это сделаю. Я не выше того, чтобы переполнять мои желания по горло компьютерами, когда он хочет быть упрямым. Пожалуйста, если вы не хотите, чтобы я плохо обращался с рабочей станцией, кто-то показал мне, что происходит не так. Подумайте о компьютерах.
Ответы
Ответ 1
Если вы используете VS2012, вы сможете выбрать свою платформу x64 через тестовые настройки, как показано ниже;
![enter image description here]()
В этом примере я имею в виду файл.runsettings. настройки
![enter image description here]()
Но если вы хотите запустить тест через командную строку, вам нужно использовать vstest.console.exe вместо MSTEST, поскольку он не поддерживает x64 test.dlls
вы найдете vstest.console.exe в папке "C:\Program Files (x86)\Common7\IDE\CommonExtensions\Microsoft\TestWindow \"
Пожалуйста, обратите внимание на следующие шаги.
- Открыть CMD
- Перейдите к "C:\Program Files (x86)\Common7\IDE\CommonExtensions\Microsoft\TestWindow \"
- выполнить vstest.console.exe "C:\Projects\Test\Test.Automation.Specs.dll"/InIsolation /platform: x64
Примечание. Test.Automation.Specs.dll - это ваш тестовый проект, и вам нужно определить полный путь
Я надеюсь, что эта помощь
Ответ 2
Сейчас я столкнулся с тем же вопросом. Ниже приведены шаги, которые вы можете предпринять, чтобы устранить проблему.
- Переключите архитектуру процессора по умолчанию для модульных тестов с x86 на x64: перейдите к Test-> Тест Settings-> Процессор по умолчанию Architecture-> x64.
![Screenshot for changing the default processor architecture to x64 for test settings.]()
- Измените параметры сборки для проекта тестирования модуля на x64.
![Screenshot for changing the build settings to x64.]()
- Очистите решение, затем перестройте решение. Тестирование вашего модуля теперь должно появиться в тестовом проводнике, и вы больше не должны сталкиваться с этой проблемой.
Рекомендации
- Ссылка на ссылку MSDN, в которой объясняется, как решить проблему.
Ответ 3
Это немного из моего объема, но настройки конфигурации для обоих проектов установлены правильно, не так ли? У вас есть они для сборки для AnyCPU или x64?
Просто попробуй Оккам Бритву... Я знаю, что меня слишком часто расстраивали настройки конфигурации, которые просто волшебным образом решают меня изменить.