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

如何在计算C#解决方案代码覆盖率时纳入无测试覆盖的项目?

解决代码覆盖率统计包含无测试覆盖项目的问题

核心原因

dotnet test 默认仅统计被测试项目直接引用的生产项目的代码覆盖率,Project3未被任何测试项目关联,因此不会被纳入覆盖率计算范围。

具体解决方案

方法一:单独为无测试项目生成空覆盖率数据

针对Project3单独执行测试命令(无需实际测试用例),生成包含0%覆盖率的统计文件:

dotnet test --no-build --collect:"XPlat Code Coverage" --project ./Project3/Project3.csproj

执行后会在Project3的测试输出目录生成对应的coverage.cobertura.xml文件,标记其覆盖率为0%。

然后修改ReportGenerator命令,确保收集所有项目的覆盖率文件,并排除测试项目本身:

reportgenerator "-reports:./**/coverage.cobertura.xml" "-targetdir:Reports_Coverage" "-reportTypes:TextSummary" "-assemblyfilters:-*.UnitTests"

方法二:通过配置文件统一指定要统计的项目

在解决方案根目录创建coverlet.runsettings配置文件,明确列出所有需要统计的生产项目:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <DataCollectionRunSettings>
    <DataCollectors>
      <DataCollector friendlyName="XPlat Code Coverage">
        <Configuration>
          <Include>
            <Module>Project1</Module>
            <Module>Project2</Module>
            <Module>Project3</Module>
          </Include>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>

之后执行测试命令时指定该配置文件,一次生成所有项目的覆盖率数据:

dotnet test --test-adapter-path:. --collect:"XPlat Code Coverage" --settings coverlet.runsettings

再运行原有的ReportGenerator命令即可得到包含Project3的汇总报告。

验证结果

两种方法最终都会让报告包含Project3的0%覆盖率数据,总覆盖率计算为(100+100+0)/300 ≈ 67%,符合预期。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 16:32:13