У меня есть решение Visual Studio 2012 с рядом собственных тестовых проектов на С ++.
Я могу запустить все это правильно и успешно из Visual Studio 2012 с помощью вкладки Test Explorer.
Однако я не могу заставить тесты запускаться из командной строки.
Следуя документации, я запустил следующую командную строку
mstest /testcontainer:PathToTestProject\Win32\Release\testproject.dll
Мне тоже нужно бежать
mstest /testcontainer:PathToTestProject\x64\Release\testproject.dll
для тестирования 64-битной версии кода.
Когда я запускаю эти командные строки, я получаю следующее сообщение об ошибке.
Средство командной строки для выполнения теста Microsoft (R) версии 11.0.50727.1
Авторское право (c) Microsoft Corporation. Все права защищены.Загрузка PathToTestProject \ Win32 \ Release \ testproject.dll …
PathToTestProject \ Win32 \ Release \ testproject.dll
Не удалось загрузить тестовый контейнер PathToTestProject \ Win32 \ Release \ testproject.dll ‘или одну из его зависимостей. Если вы строите сборку тестового проекта как 64-битную сборку, она не может быть загружена. При сборке сборки тестового проекта выберите «Любой процессор» для платформы. Чтобы запустить ваши тесты в 64-битном режиме на 64-битном процессоре, вы должны изменить настройки теста на вкладке Hosts, чтобы тесты выполнялись в 32-битном процессе. Сведения об ошибке: Не удалось загрузить файл или сборку ‘file: /// c: \ PathToTestProject \ Win32 \ Release \ testproject.dll’ или одну из ее зависимостей. Модуль должен был содержать манифест сборки.
Код является родным c ++ и имеет две конфигурации сборки: одна на платформе Win32, а другая на платформе x64. У меня не может быть конфигурации платформы AnyCPU.
Чего мне здесь не хватает, чтобы можно было запускать тесты из командной строки?
После долгих поисков я наконец обнаружил очень скрытую страницу документации msdn
Вот который заявляет о совместимости mstest с различными типами тестовых проектов.
И оказывается, что mstest не совместим с нативными модульными тестами (неплохо для msdn документировать это в легко доступном месте).
Вместо этого вам нужно использовать запуск Visual Studio Test (vstest.console.exe) вместо msbuild для собственных проектов модульных тестов.
например
vstest.console.exe /Platform:x64 PathToTestProject\x64\Release\testproject.dll
Других решений пока нет …