繁体   English   中英

在类中并行运行 NUnit 测试但不与其他类测试一起运行的方法?

[英]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.

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