【问题标题】:How to run multiple MSTest ( within the same project and in same class ) in Parallel如何并行运行多个 MSTest(在同一项目和同一类中)
【发布时间】:2023-04-02 09:15:01
【问题描述】:

我正在编写一个测试自动化框架,我需要使用 runsettings 文件并行执行所有单元测试(在同一个项目中)。

我的意思是我有一门课,我在课堂上有多个测试,我需要并行运行。

我尽职尽责地完成了所有步骤,但仍然无法使其并行运行。

我被困在这里..我之前提出了一个问题

Unable to run mstest in parallel in Visual Studio Update1

还有一个和我类似的问题

parallel execution of tests in same class in mstest

我现在的困惑是我是否需要为每个测试创建单独的项目以实现并行性

我是否错过了一些非常明显的东西?

MSTest 并行测试功能开发者请帮帮我

【问题讨论】:

标签: c# .net visual-studio unit-testing mstest


【解决方案1】:

MSTest 不支持在同一容器中并行运行测试。所以,是的,您必须为并行运行的测试编写单独的程序集 (DLL)。我不会说您应该为每个测试编写一个程序集,因为那将是矫枉过正。

也许您可以找到一些有意义的逻辑测试分组。根据您运行的测试类型,您可能只希望并行运行 2-8 个。

如果您想跨容器测试多个测试的功能,我有一个 blog post 和一个 github sample project 来演示这一点。

【讨论】:

  • 非常感谢约翰。
  • 我之前没有意识到这一点。感谢您带来一些亮点。
【解决方案2】:

您应该运行 vstest.console.exe https://msdn.microsoft.com/en-us/library/jj155800.aspx 而不是 MSTEST。 我个人在远程 Powershell 会话中使用 MSTEST 时遇到了麻烦,但 VSTEST 运行良好。
确保您的测试是线程安全的!!

在 .testSettings 文件中使用parallelTestCount 定义并行度

还要检查 TFS 或 TSTS 如何使用并行运行选项调用 vstest 以获取参考: https://github.com/Microsoft/vsts-tasks/blob/master/Tasks/VsTest/VSTest.ps1

【讨论】:

  • 我同意你的看法...我正在使用 vstest.console.exe 运行。尽管如此,我仍然面临这个问题....当我也在本地 cmd 提示符下使用 vstest.console.exe 运行时,我遇到了同样的行为。您能否分享一个您在项目中使用的示例 vstest.console.exe cmd 行(所有机密信息都经过混淆处理)谢谢您的帮助
  • 你的帖子让我很开心。
  • 另外,我相信当我在 TFS 中运行测试时,它会调用 vstest.console.exe 中的整个测试执行。我可以在构建日志中看到这一点
  • 另外,我已经检查了 TFS 中并行运行的选项。
  • 它不能与 TFS 并行工作吗?您如何验证?
【解决方案3】:

您应该可以通过以下方式更改运行设置来做到这一点。当您将作用域级别定义为 Method 而不是 ClassLevel 时,您将能够并行运行同一类中存在的测试。

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <!-- MSTest adapter -->
  <MSTest>
    <Parallelize>
      <Workers>10</Workers>
      <Scope>MethodLevel</Scope>
    </Parallelize>
  </MSTest>
    </RunSettings>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多