Выполнение тестов VSTS без mstest.exe
Из причин, по которым я не буду входить, все наши модульные тесты используют тестовую инфраструктуру VSTS. Теперь я хочу создать MSBuild script, который запускает тесты, но я не хочу использовать mstest.exe по разным причинам (он медленнее, требует установки Visual Studio повсюду, мне нужно поддерживать testrunconfig и т.д.)
Я видел, что TestDriven.net и TeamCity могут запускать "NUnit-стиль" тестов VSTS без использования mstest.exe. Знаете ли вы об автономной утилите командной строки, которая делает это?
Ответы
Ответ 1
Вы можете выполнить Team System Tests (MSTest) в NUnit, если вы используете специальный NUnit Addin, который распознает атрибуты тестирования MS (TestClass и т.д.).
Exact Magic Software имеет открытый-тестовый адаптер, который может это сделать.
ОБНОВЛЕНИЕ: Я переработал адаптер Exit Magic Msts NUnit для NUnit 2.5.2.
Ответ 2
Кажется, что TeamCity просто использует Gallio для запуска VS-тестов. Похоже, что у Gallio есть интеграция msbuild и звучит идеально, но после более близкого взгляда кажется, что для этого потребуется установка VS так же, как MSTest, поскольку она, по-видимому, зависит от MS exes:
The plugin enable condition was not satisfied: '${process:DEVENV.EXE} or
${process:VSTESTHOST.EXE} or
${process:QTAGENT.EXE} or
${process:QTAGENT32.EXE} or
${process:QTDCAGENT.EXE} or
${process:QTDCAGENT32.EXE}'.
Host process exited with code: 0
Говоря это, похоже, что хотя бы один человек получил работу:
Christoph De Baene - запуск MSTest без Visual Studio
Ответ 3
Можно запустить MSTests без установки Visual Studio. См. how-do-i-use-mstest-without-visual-studio.
Я сделал это, чтобы выполнить свои тесты как часть моего процесса CI. (Я использую CC.NET для своего решения CI).
Я в такой же ситуации, как и вы, в том, что я хочу использовать TestDriven.NET для получения статистики покрытия кода. Но у меня проблемы. Моя первая проблема заключается в том, что я использую атрибуты AssemblyInitialize
для инициализации соединения с базой данных. Это не поддерживается NUnit, поэтому примерно половина моих тестов терпит неудачу, тогда как они работают нормально в MSTest.
Итак, похоже, что перевод тестов из одной тестовой среды в другую имеет подводные камни. Если вы знаете об этом, то идите дальше, но лучше попытаться сохранить совместимость в одной тестовой среде.
Ответ 4
Мы запускаем тесты VSTS, используя msbuild TestToolsTask на сервере управления круиз-контролем. Это не использует исполняемый файл MSTEST - условие, которое вы запрашиваете, но использует различные зависимости TFS.
Обратите внимание, что мы переносим тесты из тестовой среды VSTS для NUnit, главным образом потому, что мы можем создавать расширения для NUnit для выполнения полезных задач.