有谁知道在收集测试覆盖率时,为 xUnit 运行并行程序集是否可以与 SonarCloud 一起使用?我们的单元测试运行时间很长,因此我们在 xUnit 文档中发现,您可以运行此命令以使程序集并行运行..."-- xunit.parallelizeAssembly=true"。但问题是,现在我们的测试覆盖率没有发布该 PR 中的正确测试覆盖率结果。
这就像收集 XPlat 代码覆盖率或 xunit 并行程序集的放置只会运行其中一个,以先到者为准。如果我在 XPlat 参数之前有并行汇编,那么我们的单元测试步骤的运行速度将是原来的两倍,但它不会收集代码覆盖率。如果首先收集代码覆盖率,那么单元测试步骤又会花费同样长的时间。
- task: DotNetCoreCLI@2
displayName: dotnet test
inputs:
command: test
arguments: '--no-build --configuration ${{ buildConfiguration }} --collect:"XPlat Code Coverage;Format=opencover" -- xunit.parallelizeAssembly=true'
如果并行组装位于 XPlat 参数之前,则该命令将忽略指定的
--collect
设置,但使用默认的 DataCollector 设置。
coverage.cobertura.xml
是在Pipeline结果中创建的,不是opencover
格式:
如果
parallel assembly
位于 XPlat 参数之后,则创建 opencover
结果:
此外,根据 dotnet test 文档,dotnet test 命令没有选项
xunit.parallelizeAssembly
,该选项存在于 xunit 配置文件中,请检查 answer 以供参考。
xunit.runner.json:
{
"parallelizeAssembly": true
}