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 \"

Пожалуйста, обратите внимание на следующие шаги.

  1. Открыть CMD
  2. Перейдите к "C:\Program Files (x86)\Common7\IDE\CommonExtensions\Microsoft\TestWindow \"
  3. выполнить vstest.console.exe "C:\Projects\Test\Test.Automation.Specs.dll"/InIsolation /platform: x64

Примечание. Test.Automation.Specs.dll - это ваш тестовый проект, и вам нужно определить полный путь

Я надеюсь, что эта помощь

Ответ 2

Сейчас я столкнулся с тем же вопросом. Ниже приведены шаги, которые вы можете предпринять, чтобы устранить проблему.

  1. Переключите архитектуру процессора по умолчанию для модульных тестов с x86 на x64: перейдите к Test-> Тест Settings-> Процессор по умолчанию Architecture-> x64. Screenshot for changing the default processor architecture to x64 for test settings.
  2. Измените параметры сборки для проекта тестирования модуля на x64. Screenshot for changing the build settings to x64.
  3. Очистите решение, затем перестройте решение. Тестирование вашего модуля теперь должно появиться в тестовом проводнике, и вы больше не должны сталкиваться с этой проблемой.

Рекомендации

  1. Ссылка на ссылку MSDN, в которой объясняется, как решить проблему.

Ответ 3

Это немного из моего объема, но настройки конфигурации для обоих проектов установлены правильно, не так ли? У вас есть они для сборки для AnyCPU или x64?

Просто попробуй Оккам Бритву... Я знаю, что меня слишком часто расстраивали настройки конфигурации, которые просто волшебным образом решают меня изменить.