【问题标题】:.NET 6 run XUnit tests without parallelization.NET 6 在没有并行化的情况下运行 XUnit 测试
【发布时间】:2022-04-09 20:15:33
【问题描述】:

我们的 .NET 6 CI 在 Drone 上运行时遇到问题。我们有针对真正的 postgres 数据库运行的测试。

测试在本地运行得非常好,因为 Rider 不会并行化它们。

但是,在 CI 上,测试随机失败,因为数据库中的数据不符合给定测试的预期。

我们的理解(根据失败的随机性)是测试在 CI 中并行运行。

到目前为止,我们尝试了一个 XUnit 配置文件 (xunit.runne.json):

{
    "parallelizeAssembly": false,
    "parallelizeTestCollections": false,
    "maxParallelThreads": -1
}

并在所有测试类的父类上添加一个带有名称的[Collection] 属性:

[Collection("Database Test")]

在 CI 中,使用 dotnet test 运行测试。

有什么线索吗?提前谢谢你

【问题讨论】:

  • 你的意思是你的测试实际上取决于它们的执行顺序吗?
  • 不,它们不依赖于执行顺序,它们只需要一次运行一个
  • [Collection] 属性应该可以完成这项工作,除非您在不同的进程中运行不同的测试
  • 我的测试类扩展的类上有集合属性,我应该把它放在每个子类上还是应该像这样工作?

标签: c# testing continuous-integration xunit .net-6.0


【解决方案1】:

对于有类似问题的人,我们的问题是 CI 中的测试使用的是同一个数据库。因此,当多个管道运行时,就会出现问题。我们通过为 CI 中的数据库使用服务容器解决了这个问题:每次 CI 运行一个临时数据库。

[Collection] 属性是在给定 CI 运行中对测试进行顺序化的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-09
    • 2010-12-06
    • 1970-01-01
    • 2018-01-12
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多