是否有以编程方式运行Visual Studio单元测试的API?
使用Process.Start()运行MSTests.exe在当前方案中不起作用。我正在寻找的是像NUnit SimpleTestRunner。
有什么想法吗?
/埃里克
答案 0 :(得分:10)
你是正确的,因为mstest框架没有公共API。我有一天写了mstest的手动替代品,看它有多难,而且它不像它看起来那么简单(特别是如果你想利用多个CPU核心),所以要注意沿着这条路走。
我个人总是以编程方式运行mstest.exe
,然后解析生成的.trx
XML文件。是否有任何特殊原因导致您无法使用Process.Start
来运行它?
P.S。如果你传递/noisolation
命令行参数,mstest.exe的一些奇怪的行为就会被解决 - 如果你有这种感觉,请给它一个去: - )
更新:Erik提到他想在当前线程中运行测试API,以便为全球化问题设置线程文化。
如果在调试器下运行单元测试,您会注意到mstest创建了一堆线程,并在不同的线程中运行所有测试,因此即使您可以访问API,这也不太可能。
我建议做的是:
[ClassInitialize]
(或[TestInitialize]
)方法,该方法读取此环境变量并设置文化答案 1 :(得分:3)
在用反射器深入潜入MSTest.exe并进一步深入Visual Studio单元测试堆栈之后,我发现MSTest使用的API被密封并变为私有,因此无法从外部使用。< / p>
答案 2 :(得分:0)
为什么不使用Reflector并查看NUnit SimpleTestRunner如何运行测试......然后使用这种技术...
答案 3 :(得分:0)
您可以使用Microsoft REST API for TFS来运行ms测试。请参阅文档here。
我已经链接到“调用Rest API”,以便您可以看到如何调用TFS的REST API之一。
请注意,如果您的测试与构建相关联,则每次构建排队时它们都应自动运行。
以下是Run Functional Tests的链接。
我还发现了一篇关于使用TFS SDK API运行测试的文章。这也是该链接:Link to API Article