【发布时间】: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