如何在 xUnit 中执行全局设置/拆卸并并行运行测试?

IT *_*DAV 5 c# parallel-processing nunit initialization xunit

这是我想用 xUnit 实现的目标:

  1. 运行初始化代码。
  2. 并行运行测试。
  3. 执行拆解。

我已经尝试过这里描述的[CollectionDefinition]/[Collection]/ICollectionFixture 方法但它禁用了并行执行,这对我来说至关重要。

有没有办法并行运行测试并能够在 xUnit 中编写全局设置/拆卸代码?

如果 xUnit 无法实现,NUnit 或 MSUnit 是否支持这种情况?

Rob*_*use 0

NUnit 支持这种情况。对于全局设置,请在根命名空间之一中创建一个类并向其添加[SetupFixture]属性。然后向该类添加[OneTimeSetUp]方法。该方法将针对该命名空间和子命名空间中的所有测试运行一次。这允许您拥有额外的特定于命名空间的一次性设置。

[SetUpFixture]
public class MySetUpClass
{
  [OneTimeSetUp]
  public void RunBeforeAnyTests()
  {
    // ...
  }

  [OneTimeTearDown]
  public void RunAfterAnyTests()
  {
    // ...
  }
}
Run Code Online (Sandbox Code Playgroud)

然后,要并行运行测试,请在程序集级别使用ParallelScope.All. 如果您的测试不应与其他测试并行运行,则可以NonParallelizable在较低级别使用该属性。

[assembly: Parallelizable(ParallelScope.All)]

NUnit 3.7 及更高版本支持在 NUnit 中并行运行测试方法。在此之前,它仅支持并行运行测试类。我建议使用最新版本的 NUnit 开始任何项目,以利用错误修复、新功能和改进。