[英]Way to run NUnit tests within class in parallel, but not run with other class tests?
我在Visual Studio Professional 2017
使用NUnit 3.8
。
我在我的AssemblyInfo.cs
文件中指定了[assembly: Parallelizable(ParallelScope.Fixtures)]
。 这使得默认行为类中的测试可以在这个类中的其他测试并行不运行,但是它们可以在平行与其他类的测试运行。
我想知道是否有可能保持默认行为,但在逐个类的基础上反转逻辑。 我想让特定类中的测试彼此并行运行,但不与其他类的测试并行运行。
拿下面的代码。 如果我要运行下面的所有测试 - 我希望 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);
}
}
基于这个 NUnit 文档(具体摘录如下),我认为这是可能的。
具有并行方法的非并行类:
这些方法仅彼此并行运行,而不与任何其他类的测试方法并行运行。
但是,当我使用三个工作线程运行上述代码时,前三个测试成功运行,然后不再启动更多测试。 测试运行一直处于不确定状态,直到我取消测试运行。
有什么建议?
您的代码示例看起来正确。 有一些错误,例如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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.