xunit - 在完整集

时间:2018-02-07 07:48:13

标签: c# selenium nunit xunit

我要运行大约100个硒测试,但其中2个不能并行运行

是否可以仅使用xUnit为这两个测试禁用并行性?

(那2个测试不能并行,因为他们需要模拟键盘点击 - >所以我会失去使用并行执行的输入焦点)

我正在寻找的最佳方案:

为2个测试添加一些属性,这将禁用它们的并行性。然后在测试执行中,98个测试将运行16个线程,剩下的两个测试将在最后使用1个线程执行。

我知道其中一个解决方案可能是这样的:

  • 添加'并行'和' NonParallel'测试类别
  • 与xunit.console仅运行'并行'参数maxthread = 16的类别。
  • 在那次奔跑之后' NonParallel'参数maxthread = 1
  • 的类别
  • 在完成所有合并后,xunit报告为一个。

但是不符合我的需求,我想知道我是否可以在我所描述的场景中运行测试"最佳场景"

P.S。如果没有解决方法,我可以在nunit中找到类似的东西吗?

2 个答案:

答案 0 :(得分:2)

虽然 Diver 的答案是正确的,但它并没有说明如何实现这一点。

  1. 创建新的特殊类来建立测试集合,如下所示:
[CollectionDefinition(nameof(SystemTestCollectionDefinition), DisableParallelization = true)]
public class SystemTestCollectionDefinition { }
  1. 现在您可以为禁用并行化所需的所有测试分配相同的集合名称。就我而言,我只是在类上添加了一个属性,该属性是所有系统测试的基础:
[Collection(nameof(SystemTestCollectionDefinition))]
public class BaseSystemTest { ... }

现在集合中的所有测试都将按顺序执行。

来源:https://github.com/xunit/xunit/issues/1999

答案 1 :(得分:1)

如果您有xunit> = 2.3,请尝试[CollectionDefinition(DisableParallelization = true)]。

能够通过测试集合定义禁用单个测试集合的交叉集合并行化。支持并行的测试集合将首先(并行)运行,然后是并行禁用的测试集合(按顺序运行)。

相关问题