代码之家  ›  专栏  ›  技术社区  ›  Erik Öjebo

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

  •  15
  • Erik Öjebo  · 技术社区  · 15 年前

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

    使用process.start()运行mstests.exe在当前方案中不起作用。我要找的是类似于nunit simpletestranner的东西。

    有什么想法吗?

    埃里克

    4 回复  |  直到 7 年前
        1
  •  10
  •   Orion Edwards    15 年前

    您是正确的,因为没有用于MSTEST框架的公共API。有一天,我为MSTEST编写了一个手动替换程序,以了解它有多困难,而且并不像看上去那么简单(特别是如果你想利用多个CPU核心),所以要小心走这条路。

    就我个人而言,我一直都在跑步 mstest.exe 编程,然后解析结果 .trx XML文件。你不能使用的原因有什么特别的吗 Process.Start 运行它?

    另外,如果通过 /noisolation 命令行参数-如果你觉得有这种倾向,那就试试看-)


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

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

    我建议这样做:

    1. 从测试“runner”应用程序中,设置一个环境变量
    2. 运行MSTEST,指向特定的测试
    3. 添加一个 [ClassInitialize] (或) [TestInitialize] )读取此环境变量并设置区域性的方法
    4. 利润!
        2
  •  3
  •   Erik Öjebo    15 年前

    在深入研究了Reflector之后,我发现mstest所使用的API是密封的,并且是私有的,因此我不能从外部使用。

        3
  •  0
  •   Peter Gfader    15 年前

    为什么不使用Reflector并查看nunit simpleTestRunner如何运行测试…然后用这个方法…

        4
  •  0
  •   Su Llewellyn    7 年前

    您可以使用Microsoft REST API for TFS来运行MS测试。请参阅文档 here .

    我链接到“调用一个RESTAPI”,这样您就可以看到如何调用一个RESTAPI for TFS了。

    请注意,如果您的测试链接到了生成,那么它们应该在每次生成排队时自动运行。

    这是到的链接 Run Functional Tests .

    我还发现了一篇关于使用TFSDKAPI运行测试的文章。这也是一个链接: Link to API Article