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

标签 visual-studio unit-testing mstest

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

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

有任何想法吗?

/埃里克

最佳答案

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

就我个人而言,我一直只是运行 mstest.exe以编程方式解析结果 .trx XML 文件。有什么特殊原因不能使用 Process.Start运行它?

附言如果您通过 /noisolation,mstest.exe 的一些奇怪行为会得到解决。命令行参数 - 如果您愿意,请尝试一下 :-)

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

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

我建议这样做:

  • 从您的测试“运行者”应用程序中,设置环境变量
  • 运行 mstest 并将其指向特定测试
  • 添加 [ClassInitialize] (或 [TestInitialize] )读取此环境变量并设置文化的方法
  • 利润!
  • 关于visual-studio - 是否有用于以编程方式运行 Visual Studio 单元测试的 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2054994/

    相关文章:

    visual-studio - 是否有 Intellij Idea 13 的代码片段编辑器?

    c++ - 为什么在一行中使用此 C++ 函数两次会导致编译错误?

    validation - 单元测试 - 我应该测试参数验证代码吗

    c# - .Net Core Connection 目前有事务登记

    visual-studio - 如何在 Visual Studio 2012 中更改 ipch 路径

    c# - Response.Redirect 模式内的按钮

    .net - MSTest V2 在哪里

    c# - MSTest 单元测试在 VS 代码 : VS namespace doesn't exist? 中不起作用

    python - 模拟 Django 查询集以测试采用查询集的函数

    c# - 带有 Microsoft Fakes 的 Stub 或 Shim Process 类