是否有以编程方式运行Visual Studio单元测试的API?

Eri*_*ebo 15 unit-testing mstest visual-studio

是否有以编程方式运行Visual Studio单元测试的API?

使用Process.Start()运行MSTests.exe在当前方案中不起作用.我正在寻找的是像NUnit SimpleTestRunner.

有任何想法吗?

/埃里克

Ori*_*rds 10

你是正确的,因为mstest框架没有公共API.我有一天为mstest编写了一个手动替换程序来查看它有多难,并且它并不像它看起来那么简单(特别是如果你想利用多个CPU核心),所以要注意沿着这条路走下去.

就个人而言,我总是以mstest.exe编程方式运行,然后解析生成的.trxXML文件.是否有任何特殊原因导致您无法使用Process.Start它?

PS如果你传递了/noisolation命令行参数,那么mstest.exe的一些奇怪的行为就会被解决- 如果你觉得这么倾向就给它一个去:-)


更新:Erik提到他想在当前线程中运行测试API,以便为全球化问题设置线程文化.

如果在调试器下运行单元测试,您会注意到mstest创建了一堆线程,并在不同的线程中运行所有测试,因此即使您可以访问API,这也不太可能.

我建议做的是:

  1. 从测试"runner"应用程序中,设置一个环境变量
  2. 运行mstest,将其指向特定的测试
  3. 添加一个[ClassInitialize](或[TestInitialize])方法来读取此环境变量并设置文化
  4. 利润!