Существует ли API для запуска программных средств Visual Studio Unit Tests?

Существует программный API для запуска программных тестов Visual Studio?

Запуск MSTests.exe с Process.Start() не работает в текущем сценарии. Я ищу что-то вроде NUnit SimpleTestRunner.

Любые идеи?

/Erik

Ответы

Ответ 1

Вы правы в том, что нет публичного API для фреймворка mstest. В один прекрасный день я написал ручную замену mstest, чтобы понять, как это было тяжело, и это не так просто, как кажется (особенно если вы хотите использовать преимущества более чем одного ядра процессора), поэтому остерегайтесь идти по этому пути.

Лично я всегда просто программировал mstest.exe, а затем разбирал полученный XML файл .trx. Существуют ли какие-либо конкретные причины, по которым вы не можете использовать Process.Start для его запуска?

P.S. Некоторое странное поведение mstest.exe решается, если вы передаете параметр командной строки /noisolation - дайте ему перейти, если вы так наклонены: -)


Обновление: Эрик упоминает, что хочет запустить тестовый API в текущем потоке, чтобы он мог установить культуру потока для проблем глобализации.

Если вы запустите unit test под отладчиком, вы заметите, что mstest создает кучу потоков и запускает все ваши тесты в разных потоках, поэтому это вряд ли работает, даже если вы можете получить доступ к API.

Я предлагаю сделать следующее:

  • Из вашего тестового приложения "runner" установите переменную среды
  • Запустите mestest, указав его на конкретные тесты.
  • Добавьте метод [ClassInitialize] (или [TestInitialize]), который читает эту переменную среды и устанавливает культуру
  • Profit!

Ответ 2

После глубокого погружения с отражателем в MSTest.exe и далее в стек Visual Studio Unit Test я обнаружил, что API, используемый MSTest, запечатан и закрыт, поэтому я не могу использовать его извне.

Ответ 3

Почему бы не использовать Reflector и посмотреть, как NUnit SimpleTestRunner запускает тесты... И затем используйте эту технику...

Ответ 4

Вы можете использовать Microsoft REST API для TFS для запуска тестов ms. Пожалуйста, обратитесь к документации здесь.

Я связался с "Call a Rest API", чтобы вы могли увидеть, как вы собираетесь звонить одному из REST API для TFS.

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

Вот ссылка на Запустить функциональные тесты.

Я также открыл статью об использовании TFS SDK API для запуска тестов. Вот и эта ссылка: Ссылка на статью API