繁体   English   中英

从控制台运行器的多个程序集中并行运行 NUnit3 测试

[英]Run NUnit3 tests in parallel from multiple assemblies from console runner

我希望能够使用 NUnit 3 控制台运行器并行运行来自多个程序集的参数化测试。 关键是我希望能够并行运行静态初始化程序(测试的慢部分)。

我可以使用 VisualStudio 中的 ReSharper 10 测试运行程序来实现它。 当我在 NUnit 3 控制台运行器中运行同一个项目时,静态初始化程序不会并行运行。

我创建了一个简单的单元测试解决方案来重现该问题。 有两个项目。 每个项目都有一个测试类,如下所示。 我添加了日志以显示测试不会从控制台运行器并行运行。

[TestFixture]
public class UnitTest1
{
    public static IEnumerable Test1Static
    {
        get
        {

            Console.WriteLine($"before sleep 1 - {DateTime.Now}");
            Thread.Sleep(12000);
            Console.WriteLine($"after sleep 1 - {DateTime.Now}");
            return new List<bool> { true, true };
        }
    }

    [Test, TestCaseSource(nameof(Test1Static))]
    public void TestMethod1(bool tc)
    {
        Assert.IsTrue(tc);
    }
}

控制台运行结果:

C:\dev>"C:\Program Files (x86)\NUnit.org\nunit-console\nunit3-console.exe" "C:\Users\username\Documents\Visual Studio 2015\Projects\testn
unit1\UnitTestProject1\bin\Debug\UnitTestProject1.dll" "C:\Users\username\Documents\Visual Studio 2015\Projects\testnunit1\UnitTestProjec
t2\bin\Debug\UnitTestProject2.dll"
NUnit Console Runner 3.2.0
Copyright (C) 2016 Charlie Poole

Runtime Environment
   OS Version: Microsoft Windows NT 6.1.7601 Service Pack 1
  CLR Version: 4.0.30319.42000

Test Files
    C:\Users\username\Documents\Visual Studio 2015\Projects\testnunit1\UnitTestProject1\bin\Debug\UnitTestProject1.dll
    C:\Users\username\Documents\Visual Studio 2015\Projects\testnunit1\UnitTestProject2\bin\Debug\UnitTestProject2.dll

before sleep 1 - 4/6/2016 3:13:34 PM
after sleep 1 - 4/6/2016 3:13:46 PM
before sleep 2 - 4/6/2016 3:13:47 PM
after sleep 2 - 4/6/2016 3:13:59 PM

Run Settings
    WorkDirectory: C:\dev
    ImageRuntimeVersion: 4.0.30319
    ImageTargetFrameworkName: .NETFramework,Version=v4.5.2
    ImageRequiresX86: False
    ImageRequiresDefaultAppDomainAssemblyResolver: False
    NumberOfTestWorkers: 8

Test Run Summary
  Overall result: Passed

您还没有告诉 NUnit 在并行进程中运行这两个程序集。 添加 --process:Parallel 到您的命令行。 建议阅读https://github.com/nunit/docs/wiki 上的第 3 版文档,而不是阅读旧版本的文档。

根据性能,您可能希望将每个进程的并行线程数(在您的机器上显示为默认值 8)减少到较低的数量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM