C# 如何并行运行多个MSTest(在同一项目和同一类中)
我正在编写一个测试自动化框架,我需要使用runsettings文件并行执行所有单元测试(在同一个项目中) 这里我的意思是,我有一个类,在这个类中有多个测试,我需要并行运行这个测试 我尽职尽责地遵循了所有步骤,但仍然无法使其并行运行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&
<?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框架也不支持它。但是很明显,如果您将测试分为不同的类,这至少比不同的程序集更方便