我正在编写一个测试自动化框架,我需要使用runsettings文件并行执行所有单元测试(在同一个项目中)。
这里我的意思是我有一个类,我在类中有多个测试,我需要运行这个并行。
我尽职尽责地遵循了所有步骤,但仍无法使其并行运行。
我被困在这里..我之前提出了一个问题
Unable to run mstest in parallel in Visual Studio Update1
另外,另一个类似于我的问题
parallel execution of tests in same class in mstest
我现在的困惑是我是否需要为每个测试创建单独的项目以实现并行性
我想念一些非常明显的东西吗?
MSTest并行测试功能开发人员请帮助我
答案 0 :(得分:2)
MSTest不支持在同一容器中并行运行测试。所以,是的,您必须为将并行运行的测试编写单独的程序集(DLL)。我不会说你应该为每个测试编写一个程序集,因为这样会有点过分。
也许您可以找到一些有意义的逻辑分组测试。根据您运行的测试类型,您可能只希望2-8并行运行。
如果你想测试跨容器的多个测试的功能,我有一个blog post和一个github sample project来证明这一点。
答案 1 :(得分:0)
您应该运行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
答案 2 :(得分:0)
您应该可以通过以下方式更改运行设置来执行此操作。当您将范围级别定义为Method而不是ClassLevel时,您将能够并行运行同一类中存在的测试。
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- MSTest adapter -->
<MSTest>
<Parallelize>
<Workers>10</Workers>
<Scope>MethodLevel</Scope>
</Parallelize>
</MSTest>
</RunSettings>