我在NUnit 3.8
使用Visual Studio Professional 2017
。
我在[assembly: Parallelizable(ParallelScope.Fixtures)]
文件中指定了AssemblyInfo.cs
。这使得在类中测试的默认行为不能与该类中的其他测试并行运行,但它们可以与其他类的测试并行运行。
我想知道是否可以保留默认行为,但是逐个类别地反转逻辑。我希望在特定类中的测试与彼此并行运行,而不是与其他类的测试同时运行。
请使用以下代码。如果我要运行下面的所有测试 - 我希望TestClassA中的所有测试都能并行执行,直到完成所有测试,然后TestClassB中的所有测试都会并行执行。
[NonParallelizable]
public class TestClassA
{
[Test]
[Parallelizable(ParallelScope.Children)]
[TestCase(1, 1)]
[TestCase(2, 2)]
[TestCase(3, 3)]
[TestCase(4, 4)]
public void TestIntsA(int a, int b)
{
System.Threading.Thread.Sleep(1000);
Assert.AreEqual(a, b);
}
}
[NonParallelizable]
public class TestClassB
{
[Test]
[Parallelizable(ParallelScope.Children)]
[TestCase(1, 2)]
[TestCase(2, 3)]
[TestCase(3, 4)]
[TestCase(4, 5)]
public void TestIntsB(int a, int b)
{
System.Threading.Thread.Sleep(1000);
Assert.AreEqual(a, b);
}
}
基于this NUnit documentation(下面的具体摘录),我认为这是可能的。
采用并行方法的非并行类:
这些方法只能彼此并行运行,而不是与任何其他类的测试方法一起运行。
但是,当我使用三个工作线程运行上述代码时,前三个测试成功运行,然后不再启动测试。测试运行暂停,直到我取消测试运行。
有什么建议吗?
答案 0 :(得分:1)
您编写的代码示例正确无误。有一些错误,例如https://github.com/nunit/nunit/issues/2438,这些错误导致了v3.8中的测试用例并行化问题。该团队目前正致力于v3.8.2,这应解决这些问题。
已经解决了许多问题 - 您可能希望尝试使用最新版本的master来查看您的案例是否已修复:
https://ci.appveyor.com/project/CharliePoole/nunit/build/3.9.0-dev-04489/artifacts