如何在Azure Pipelines中直接展示.NET Core代码覆盖率并配置过滤规则
问题1:.NET Core项目Azure Pipelines在线查看代码覆盖率配置
完全可以实现,你当前测试用的YAML配置逻辑已经是正确的,核心调整和原理如下:
你之前默认用--collect "Code coverage"生成的是Windows专属的.coverage格式,Azure DevOps无法直接解析展示,替换为跨平台采集器+发布Cobertura格式报告即可实现页面直接查看,完整配置逻辑:
- 调整测试任务参数,替换采集器:将DotNetCoreCLI test任务的arguments改为
--configuration $(BuildConfiguration) --collect:"XPlat Code Coverage",该采集器会输出Cobertura格式的XML覆盖率文件,默认存储在$(Agent.TempDirectory)路径下。 - 安装覆盖率报告生成工具:执行
dotnet tool install -g dotnet-reportgenerator-globaltool安装全局工具,用于合并多测试项目生成的多个覆盖率文件,生成统一格式的报告。 - 合并生成统一报告:调用reportgenerator工具,将所有零散的
coverage.cobertura.xml文件合并为一份完整的报告,指定输出格式为Cobertura。 - 发布覆盖率报告:使用
PublishCodeCoverageResults@1任务上传生成的Cobertura报告,任务执行完成后,即可直接在流水线运行详情的「代码覆盖率」标签页查看覆盖率统计、各文件覆盖详情,和TypeScript项目的展示效果完全一致。
问题2:代码覆盖率范围过滤方式
是的,你可以通过.runsettings文件实现过滤,也可以通过reportgenerator参数实现轻量过滤:
- 使用.runsettings文件:在配置文件的
DataCollectors节点下配置Include/Exclude规则,支持按程序集、命名空间、类、方法维度过滤,配置完成后在dotnet test的参数中添加--settings <你的.runsettings文件路径>即可生效,适合复杂过滤规则的场景。 - 使用reportgenerator参数过滤:直接在调用reportgenerator时添加
-classfilters、-filefilters参数即可实现过滤,比如排除所有测试类可以添加参数-classfilters:-*.Tests.*,无需额外新增配置文件,适合简单过滤场景。
内容的提问来源于stack exchange,提问作者Jesper Lund Stocholm
相关产品推荐
相关产品推荐

