Вы правы в том, что нет общедоступного API для среды mstest. Однажды я написал ручную замену для mstest, чтобы увидеть, насколько это сложно, и это не так просто, как кажется (особенно если вы хотите использовать преимущества более чем одного ядра ЦП), так что остерегайтесь идти по этому пути.
Лично я всегда просто запускаю mstest.exe
программно, а затем анализирую полученный .trx
XML-файл. Существуют ли какие-либо конкретные причины, по которым вы не можете использовать Process.Start
для его запуска?
P.S. Некоторые странные действия mstest.exe решаются, если вы передаете параметр командной строки /noisolation
- попробуйте, если вы склонны: -)
Обновление: Эрик упоминает, что хочет запустить тестовый API в текущем потоке, чтобы он мог установить культуру потока для проблем глобализации.
Если вы запустите модульный тест в отладчике, вы заметите, что mstest создает несколько потоков и выполняет все ваши тесты в разных потоках, так что это вряд ли сработает, даже если вы сможете получить доступ к API.
Я бы предложил сделать следующее:
- В вашем тестовом «бегущем» приложении установите переменную окружения
- Запустите mstest, указывая на определенные тесты
- Добавить метод
[ClassInitialize]
(или [TestInitialize]
), который считывает эту переменную среды и устанавливает культуру
- Profit!