【问题标题】:Parallel option for vstest.console.exe does not work as expectedvstest.console.exe 的并行选项无法按预期工作
【发布时间】:2018-02-09 09:52:43
【问题描述】:

我希望 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) 微软公司。保留所有权利。

开始执行测试,请稍候... 已通过 TestMethod1 已通过
测试方法 2 已通过 测试方法 3 已通过 测试方法 4

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

测试执行时间:8.6960 秒

【问题讨论】:

  • 您有正在使用的设置文件吗?完整的命令行(+ 设置,如果适用)将有助于确保人们可以重现您所看到的内容。
  • vstest.console.exe /Parallel MyUnitTest.dll 产生上述结果。注意到我有/没有/Parallel选项的执行时间相同,看起来它没有任何效果。
  • 我自己没玩过这么多。但是,当引入此功能时,它似乎只能跨测试容器并行化——即,如果您有多个 程序集,它将在单独的程序集中并行运行测试。看不到任何表明从那时起发生了任何变化的东西。

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


【解决方案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

【讨论】:

  • 不起作用,至少当文件重命名为 .runsettings 并从 Visual Studio IDE 中选择时。它应该工作吗?
  • 啊,这仅适用于您有两个单元测试项目,它们并行运行,但不仅适用于一个单元测试项目。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-14
  • 1970-01-01
  • 2016-07-18
  • 2020-08-20
  • 2013-12-23
  • 2014-12-09
相关资源
最近更新 更多