C# 如何并行运行多个MSTest(在同一项目和同一类中)

C# 如何并行运行多个MSTest(在同一项目和同一类中),c#,.net,visual-studio,unit-testing,mstest,C#,.net,Visual Studio,Unit Testing,Mstest,我正在编写一个测试自动化框架,我需要使用runsettings文件并行执行所有单元测试(在同一个项目中) 这里我的意思是,我有一个类,在这个类中有多个测试,我需要并行运行这个测试 我尽职尽责地遵循了所有步骤,但仍然无法使其并行运行 <?xml version="1.0" encoding="utf-8"?> <RunSettings> <!-- MSTest adapter --> <MSTest> <Parallelize&

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

这里我的意思是,我有一个类,在这个类中有多个测试,我需要并行运行这个测试

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

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <!-- MSTest adapter -->
  <MSTest>
    <Parallelize>
      <Workers>10</Workers>
      <Scope>MethodLevel</Scope>
    </Parallelize>
  </MSTest>
    </RunSettings>
我被困在这里了。。我以前提过一个问题

还有一个和我类似的问题

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

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


MSTest并行测试功能开发人员请帮助我

您应该运行
vstest.console.exe
而不是MSTest。 就我个人而言,在远程Powershell会话中使用MSTEST时遇到了麻烦,但VSTEST运行正常。
确保您的测试是线程安全的

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

还要检查TFS或TSTS如何使用并行运行选项调用vstest的参考:

您应该运行
vstest.console.exe
而不是MSTEST。 就我个人而言,在远程Powershell会话中使用MSTEST时遇到了麻烦,但VSTEST运行正常。
确保您的测试是线程安全的

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

还要检查TFS或TSTS如何使用并行运行选项调用vstest的参考:
MSTest不支持在同一容器中并行运行测试。因此,是的,您必须为并行运行的测试编写单独的程序集(DLL)。我不会说您应该为每个测试编写一个程序集,因为那样做太过分了

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

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

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

MSTest不支持在同一容器中并行运行测试。因此,是的,您必须为并行运行的测试编写单独的程序集(DLL)。我不会说您应该为每个测试编写一个程序集,因为那样做太过分了

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

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

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

您应该能够通过以下方式更改运行设置来完成此操作。当您将作用域级别定义为方法而不是类级别时,您将能够并行运行同一类中的测试

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

10
方法层

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

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

10
方法层

我同意你的看法。。。我正在使用vstest.console.exe运行。尽管如此,我仍然面临着这个问题……当我在本地cmd提示符中使用vstest.console.exe运行时,我也遇到了同样的行为。你能给我分享一个你在你的项目中使用的vstest.console.exe命令行示例吗(所有机密信息都被混淆了)谢谢你的帮助你的帖子让我很高兴。另外,我相信当我在TFS中运行测试时,它会在vstest.console.exe中调用整个测试执行。我可以在构建日志中看到这一点。所以,我已经选中了在TFS中并行运行的选项。它与TFS并行工作吗?你怎么核实?我同意你。。。我正在使用vstest.console.exe运行。尽管如此,我仍然面临着这个问题……当我在本地cmd提示符中使用vstest.console.exe运行时,我也遇到了同样的行为。你能给我分享一个你在你的项目中使用的vstest.console.exe命令行示例吗(所有机密信息都被混淆了)谢谢你的帮助你的帖子让我很高兴。另外,我相信当我在TFS中运行测试时,它会在vstest.console.exe中调用整个测试执行。我可以在构建日志中看到这一点。所以,我已经选中了在TFS中并行运行的选项。它与TFS并行工作吗?你怎么核实?非常感谢约翰。我以前不知道这件事。谢谢你带来了一些光。非常感谢约翰。我以前没有意识到这一点。Thx带来了一些启示。即使是(应该是)更高级的XUnit框架也不支持它。但是很明显,如果您将测试分为不同的类,这至少比不同的程序集更方便,即使(应该是)更高级的XUnit框架也不支持它。但是很明显,如果您将测试分为不同的类,这至少比不同的程序集更方便