vstest.console.exe的并行选项无法按预期工作

时间:2018-02-09 09:52:44

标签: c# visual-studio unit-testing async-await mstest

我期待vstest.console.exe将与指定的/Parallel选项并行运行所有测试方法。在4核机器上,我预计下面的测试类将花费大约2~3秒执行,实际上我得到了8~9秒,这意味着测试按顺序执行。

[TestClass]
public class UnitTest1
{
    [TestMethod]
    public async Task TestMethod1()
    {
        await Task.Delay(2000);
    }

    [TestMethod]
    public async Task TestMethod2()
    {
        await Task.Delay(2000);
    }

    [TestMethod]
    public async Task TestMethod3()
    {
        await Task.Delay(2000);
    }

    [TestMethod]
    public async Task TestMethod4()
    {
        await Task.Delay(2000);
    }
}

测试输出:

  

Microsoft(R)测试执行命令行工具版本15.5.0   版权所有(c)Microsoft Corporation。保留所有权利。

     

开始测试执行,请稍候......通过TestMethod1通过了   TestMethod2传递了TestMethod3传递的TestMethod4

     

总测试:4。通过:4。失败:0。跳过:0。测试运行成功。

     

测试执行时间:8.6960秒

1 个答案:

答案 0 :(得分:1)

您将需要一个设置文件,以告知您要用于执行的核心数。

命令将是这样的:

vstest.console.exe /Parallel MyUnitTest.dll /Settings:C:\Settings.testsettings

Settings.testsettings应该是这样的:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<RunConfiguration>
<MaxCpuCount>0</MaxCpuCount>
</RunConfiguration>
</RunSettings>

MaxCpuCount的值具有以下语义:

'n'(其中1&lt; = n&lt; =核心数):将启动upto'n'个进程。 任何其他值的'n':启动的进程数量与计算机上的可用核心数量一样多。 通常,值为0表示可以使用最多可用的所有可用核心。