Есть ли API для управления Визуальными Модульными тестами Студии программно?
Управление MSTests.exe с Процессом. Начните (), не работает в текущем сценарии. То, что я ищу, является чем-то как NUnit SimpleTestRunner.
Какие-либо идеи?
/Erik
Вы правы в том, что для платформы mstest нет общедоступного API. Однажды я написал ручную замену mstest, чтобы увидеть, насколько это было сложно, и это не так просто, как кажется (особенно, если вы хотите использовать преимущества более чем одного ядра процессора), поэтому остерегайтесь идти по этому пути.
Лично я всегда просто запускал mstest.exe
программно, а затем анализировал полученный XML-файл .trx
. Есть ли какие-то особые причины, по которым вы не можете использовать Process.Start
для его запуска?
P.S. Некоторые из странного поведения mstest.exe решаются, если вы передаете параметр командной строки / noisolation
- попробуйте, если вам так хочется: -)
Обновление: Эрик упоминает, что хочет запустить тестовый API в текущем потоке, поэтому он может установить культуру потоков для решения проблем глобализации.
Если вы запустите модульный тест в отладчике, вы заметите, что mstest создает группу потоков и запускает все ваши тесты в разных потоках, поэтому это вряд ли сработает, даже если вы можете получить доступ к API.
Я бы посоветовал сделать следующее:
[ClassInitialize]
(или [TestInitialize]
), который считывает эту переменную среды и устанавливает культуру Почему бы не использовать отражатель и видеть, насколько NUNIT Simpletestrunner запущен тесты ... а затем использовать эту технику ...
После глубокого погружения с отражателем в MStest.exe и дальше вниз в тестовый стек визуального студии, я обнаружил, что API, используемый MSTEST, герметизирован и сделан в частном порядке, так что я не могу быть использованы снаружи.