.NET 6 运行 没有并行化的 XUnit 测试

.NET 6 run XUnit tests without parallelization

我们的 .NET 6 CI 运行 无人机有问题。我们有针对真实 postgres 数据库的 运行 测试。

在本地测试 运行 非常好,因为 Rider 没有将它们并行化。

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

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

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

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

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

[Collection("Database Test")]

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

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

对于遇到类似问题的人,我们的问题是 CI 中的测试使用相同的数据库。因此,当多个管道 运行ning 时,问题就发生了。我们通过在 CI 中为数据库使用服务容器解决了这个问题:每个 CI 运行.

一个临时数据库

在给定的 CI 运行 中按顺序排列测试的解决方案是 [Collection] 属性。