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

C# MSTest项目如何使用coverlet.collector统计测试工具类代码覆盖率

问题原因

coverlet 默认开启了测试程序集排除规则,只会统计业务项目(即你的项目A)的代码覆盖率,存放在UnitTests测试项目内的UnitTestUtils.cs属于测试项目代码,默认不会被纳入统计范围。

解决方案

方法1:修改测试项目配置(推荐,一次性生效)

打开UnitTests项目的.csproj文件,在<PropertyGroup>节点中添加如下配置:

<PropertyGroup>
  <!-- 关闭默认排除测试程序集的规则 -->
  <CoverletExcludeTestAssembly>false</CoverletExcludeTestAssembly>
  <!-- 指定仅统计UnitTests程序集内的代码,不需要统计项目A可去掉[A]*的配置 -->
  <CoverletInclude>[UnitTests]*</CoverletInclude>
  <!-- 排除测试用例文件,仅保留工具类代码统计 -->
  <CoverletExclude>[UnitTests]UnitTests.Tests.*,[UnitTests]UnitTests.UtilsTests.*</CoverletExclude>
</PropertyGroup>

配置完成后直接执行原命令即可:
dotnet test --filter Utils

方法2:命令行传参(临时生效,无需修改配置文件)

直接在运行测试的命令中追加配置参数:
dotnet test --filter Utils /p:CoverletExcludeTestAssembly=false /p:CoverletInclude="[UnitTests]*" /p:CoverletExclude="[UnitTests]UnitTests.Tests.*,[UnitTests]UnitTests.UtilsTests.*"

优化建议

如果你的单元测试工具方法需要在多个测试项目中复用,建议将UnitTestUtils.cs单独拆分为独立的类库项目,该项目不属于测试项目类型,coverlet会默认统计其覆盖率,无需额外修改排除规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:36:05