You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过一次dotnet test调用同时生成TRX文件和代码覆盖率结果

问题1:调用dotnet test同时生成代码覆盖率结果和.trx文件的操作是否正确?

操作本身符合规范,出现重复文件是dotnet test的默认行为导致:每个测试项目执行时都会创建独立的会话目录(以GUID命名)存储本次测试的产出,添加--logger trx后,trx日志的附件同步逻辑会额外生成副本目录,才会出现大量重复的覆盖率文件。

问题2:dotnet test是否支持该场景?

完全支持。你可以通过调整参数优化输出结构,避免冗余文件生成:

  • 可以在测试命令中添加-- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Directory=artifacts/coverage参数,强制所有覆盖率文件输出到固定目录,避免嵌套的GUID文件夹
  • 也可以通过RunSettings文件统一配置输出路径

问题3:Azure Pipelines市场中的ReportGenerator扩展功能现在是否已经内置到dotnet中?

没有内置。默认.NET SDK仅内置了覆盖率数据收集能力,只能生成原始的Cobertura格式XML文件。如果需要合并多项目覆盖率结果、生成可视化HTML报告,仍需要单独安装ReportGenerator全局工具,或者使用Azure Pipelines的ReportGenerator扩展。

问题4:哪份代码覆盖率结果是真实有效的?发布代码覆盖率结果前是否需要将GUID目录复制到其他位置?

直接存放在artifacts/test-results下一级GUID目录中的coverage.cobertura.xml是有效文件,每个文件对应一个测试项目的覆盖率数据。你看到的In目录下的文件是trx日志生成的无效副本,大多为空或者数据不全。
不需要复制GUID目录,推荐先将所有有效覆盖率文件合并为一份再发布,避免PublishCodeCoverageResults@1任务匹配到无效文件。合并操作可以通过ReportGenerator工具实现:

dotnet tool install --global dotnet-reportgenerator-globaltool
reportgenerator -reports:artifacts/test-results/**/coverage.cobertura.xml -targetdir:artifacts/merged-coverage -reporttypes:Cobertura

之后将PublishCodeCoverageResults@1任务的summaryFileLocation指向合并后的文件即可。

问题5:指定RunSettings文件实现排除规则是否与当前工作流兼容?

完全兼容。你可以创建.runsettings配置文件,在其中配置Coverlet的过滤规则,比如排除带特定属性的成员、排除指定命名空间等,在dotnet test命令中添加--settings yourconfig.runsettings参数即可生效。


内容的提问来源于stack exchange,提问作者NathanAldenSr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 11:18:01