Существует ли API для запуска модульных тестов Visual Studio программно? - PullRequest
15 голосов
/ 13 января 2010

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

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

Есть идеи?

/ Erik

Ответы [ 4 ]

10 голосов
/ 08 апреля 2010

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

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

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


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

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

Я бы предложил сделать следующее:

  1. В вашем тестовом «бегущем» приложении установите переменную окружения
  2. Запустите mstest, указывая на определенные тесты
  3. Добавить метод [ClassInitialize] (или [TestInitialize]), который считывает эту переменную среды и устанавливает культуру
  4. Profit!
3 голосов
/ 02 февраля 2010

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

0 голосов
/ 12 декабря 2017

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

Я связался с «Вызов API отдыха», чтобы вы могли видеть, как вы будете вызывать один из API REST для TFS.

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

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

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

0 голосов
/ 23 января 2010

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

...