我希望能够使用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
答案 0 :(得分:1)
您还没有告诉NUnit在并行进程中运行这两个程序集。添加--process:与命令行并行。建议在https://github.com/nunit/docs/wiki阅读第3版文档,不要使用旧版文档。
根据性能的不同,您可能希望将每个进程的并行线程数(在计算机上显示为默认值8)减少到较低的数量。