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

如何将Coverlet代码覆盖率指标输出至控制台?

如何让Coverlet将代码覆盖率输出至控制台

问题描述

我使用Coverlet代码覆盖率工具运行dotnet test命令时,控制台并未输出任何覆盖率相关内容,与预期效果不符。希望能将覆盖率指标直接输出到控制台,方便本地查看。

运行的命令

➜  dotnet test /p:CollectCoverage=true /p:ExcludeByFile="**/*Migrations/*.cs" ./src/XYZ.IAM.AssetGovernance.sln
Restore complete (0,4s)
  WorkerExtensions succeeded (1,4s) → src/AssetGovernance/obj/Debug/net8.0/WorkerExtensions/buildout/Microsoft.Azure.Functions.Worker.Extensions.dll
  XYZ.IAM.AssetGovernance succeeded (1,7s) → src/AssetGovernance/bin/Debug/net8.0/XYZ.IAM.AssetGovernance.dll
  XYZ.IAM.AssetGovernance.Tests succeeded (0,1s) → src/AssetGovernance.Tests/bin/Debug/net8.0/XYZ.IAM.AssetGovernance.Tests.dll
[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 8.0.11)
[xUnit.net 00:00:00.07]   Discovering: XYZ.IAM.AssetGovernance.Tests
[xUnit.net 00:00:00.09]   Discovered:  XYZ.IAM.AssetGovernance.Tests
[xUnit.net 00:00:00.09]   Starting:    XYZ.IAM.AssetGovernance.Tests
[xUnit.net 00:00:00.77]   Finished:    XYZ.IAM.AssetGovernance.Tests
  XYZ.IAM.AssetGovernance.Tests test succeeded (1,3s)

Test summary: total: 22, failed: 0, succeeded: 22, skipped: 0, duration: 1,3s
Build succeeded in 3,8s

使用的NuGet包

<PackageReference Include="coverlet.collector" Version="6.0.2" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
<PackageReference Include="Moq" Version="4.20.72" />
<PackageReference Include="xunit" Version="2.9.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2" />

.NET SDK版本

9.0.100


解决方法

1. 替换Coverlet NuGet包

coverlet.collector是基于VSTest的数据收集器,默认仅生成覆盖率文件,不支持直接输出到控制台。需要将其替换为coverlet.msbuild包:

<!-- 移除原有的coverlet.collector -->
<!-- <PackageReference Include="coverlet.collector" Version="6.0.2" /> -->
<!-- 添加coverlet.msbuild -->
<PackageReference Include="coverlet.msbuild" Version="6.0.2" PrivateAssets="all" />

PrivateAssets="all"用于避免将该包传递依赖到其他项目

2. 修改dotnet test命令参数

添加/p:CoverletOutputFormat=cmd参数,指定输出格式为控制台:

dotnet test /p:CollectCoverage=true /p:ExcludeByFile="**/*Migrations/*.cs" /p:CoverletOutputFormat=cmd ./src/XYZ.IAM.AssetGovernance.sln

如果需要同时生成覆盖率文件(如JSON格式)和控制台输出,可使用逗号分隔多个格式(注意用%2c替代逗号,避免命令行解析问题):

dotnet test /p:CollectCoverage=true /p:ExcludeByFile="**/*Migrations/*.cs" /p:CoverletOutputFormat=json%2ccmd ./src/XYZ.IAM.AssetGovernance.sln

3. 验证效果

运行修改后的命令后,控制台会在测试完成后输出类似以下的覆盖率汇总:

+-------------------------------+------+--------+--------+
| Module                        | Line | Branch | Method |
+-------------------------------+------+--------+--------+
| XYZ.IAM.AssetGovernance       | 85%  | 70%    | 90%    |
+-------------------------------+------+--------+--------+

+---------+------+--------+--------+
|         | Line | Branch | Method |
+---------+------+--------+--------+
| Total   | 85%  | 70%    | 90%    |
+---------+------+--------+--------+

内容的提问来源于Stack Exchange,提问作者Shuzheng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 19:41:06