如何在NUNit中为Parametrized测试类设置ParallelScope?

问题描述 投票:1回答:1

我有一个测试套件,包含两个测试类和一个并行范围的基类。

[TestFixture("A")]
[TestFixture("B")]
class Fixture1 : BaseFixture{
//tests}

[TestFixture("A")]
[TestFixture("B")]
class Fixture2 : BaseFixture{
//tests}

[Parallelizable(ParallelScope.Fixtures)]
class BaseFixture{
}

有了这个并行范围,我的测试就会像方案1一样运行。在特定模式下. 我不希望对不同的数据进行并行执行,我想在Fixture1和Fixture2中使用[NonParallelizable]属性。在Fixture1和Fixture2中使用[NonParallelizable]属性,我达到了方案2----。这对测试的性能是一个严重的瓶颈。

我只想保持 类间平行化不在不同的类数据之间就像方案3中的方案一样。

我怎么做呢?

c# parallel-processing nunit
1个回答
0
投票

本质上,没有办法指定一个夹具可以和一些夹具并行运行,而不是其他夹具。曾经我们计划实现这个功能,但我不确定它是否还在路线图上。

您是否希望每个夹具中的单个测试并行运行?根据答案,您可以采取不同的行动作为变通方法。

  1. 并行运行测试用例,并允许夹具按顺序运行。如果有足够的案例,这可能会给您带来 "足够好 "的吞吐量。

  2. 按顺序运行测试用例,并让夹具全部并行运行。要做到这一点,您必须修改它们,以确保它们不会尝试使用相同的驱动程序或共享任何其他状态。

对不起,这不是一个更好的答案。 :-)


0
投票

复制 TestFixture 属性重复了测试夹具,这就是为什么夹具会并行运行。似乎没有一个解决方案可以让两个夹具并行运行。

您可以使用 [Parallelizable(ParallelScope.Default)] 覆盖所有使用测试数据的测试夹具的并行化。这将按顺序运行这些夹具,同时允许所有其他测试夹具按顺序运行。

© www.soinside.com 2019 - 2024. All rights reserved.