NUnit并行运行测试类

3
我对nunit的Parallel属性有一点困惑:
假设我有3个类,每个类都填充了一些测试:
ClassA
    - Test1
    - Test2
    - Test3
ClassB
    - Test1
ClassC
    - Test1
    - Test2

我想同时运行ClassA和ClassB中的每个测试(顺序无所谓)。
当ClassA和ClassB在运行时,我还想运行ClassC,但是在这个类中,我想保持指定测试的顺序。
我的问题是,我应该如何设置属性以获得这样的行为?
我查看了文档https://github.com/nunit/docs/wiki/Framework-Parallel-Test-Execution,但仍然感到困惑。
1个回答

5

从简单开始...

  1. 如果你不使用ParallelizableAttribute,那么就没有任何东西会并行运行。:-)

  2. 如果你将Parallelizable添加到每个fixture中,则三个fixture将并行运行,但是单独的测试不会。也就是说,最多可以同时运行三件事情,每个类中一件。

  3. 如果你在程序集级别添加了[Parallelizable(ParallelScope.Fixtures)],则效果与(2)相同。只有在几乎所有的fixture都能成功并行运行时,才应该这样做,在这种情况下,你会标记那些不能的为[NonParallelizable]。我的经验是帮助人们时,太多的人这样做,却没有意识到他们的测试可能不总是正确地并行运行,因为没有编写测试以便如此。开始时,最安全的方式是默认为非并行,并且只有在适合你的情况下才添加它。

  4. 从(2)开始,将A和B上的属性更改为[Parallelizable(ParallelScope.All)][Parallelizable(ParallelScope.Self + ParallelScope.Children)。我喜欢更长的形式,因为对于读者来说更清楚它的作用。这将完全产生你想要的效果。

还有一点需要注意:你应该确保指定测试顺序的任何fixture不会并行运行。 NUnit允许你同时指定并行和顺序而没有错误。在这种情况下,它只是按照你给出的顺序开始测试,但这可能不是你想要的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接