如何在Azure Pipeline YAML中配置Coverlet与Cobertura包含NUnit测试项目覆盖率
Azure Pipeline代码覆盖率未包含测试项目的解决办法
默认Coverlet(XPlat Code Coverage依赖的工具)会自动排除测试项目代码,这是它的默认行为。你当前配置里的/p:Include="[Warsy.Fulto.Test]*"没生效,是因为使用--collect:"XPlat Code Coverage"时,需要明确覆盖排除规则并指定格式参数。
修正后的YAML配置
# 运行测试并收集包含测试项目的代码覆盖率 - task: DotNetCoreCLI@2 displayName: '运行测试并收集覆盖率' inputs: command: 'test' projects: '**/Warsy.Fulto.Test.csproj' arguments: | --configuration $(buildConfiguration) --collect:"XPlat Code Coverage" /p:Include="[Warsy.Fulto.Test]*" /p:Exclude="" /p:CoverletOutputFormat=cobertura --verbosity detailed # 发布代码覆盖率结果 - task: PublishCodeCoverageResults@2 displayName: '发布覆盖率报告' inputs: codeCoverageTool: 'Cobertura' summaryFileLocation: '$(Agent.TempDirectory)/**/coverage.cobertura.xml'
关键调整点
/p:Exclude="":清空默认排除规则,避免测试项目被自动过滤/p:CoverletOutputFormat=cobertura:强制生成Cobertura格式报告,保证和后续发布任务兼容- 确认
Include参数的程序集名称准确:[Warsy.Fulto.Test]*必须和测试项目的程序集全名完全匹配(注意大小写、命名空间一致性)
验证步骤
- 查看测试任务的详细日志,确认Coverlet已接收
Include和Exclude参数 - 检查生成的
coverage.cobertura.xml文件,搜索测试项目的命名空间,确认是否存在相关覆盖率数据
内容的提问来源于stack exchange,提问作者b_J
相关产品推荐
相关产品推荐

