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

如何为使用SpecFlow编写单元测试的.NET Core WebAPI项目执行代码覆盖率检测

.NET Core WebAPI + SpecFlow(MSTest) 项目代码覆盖率检测操作步骤

1. 安装必要依赖

首先在你的SpecFlow测试项目中安装所需的NuGet包,可直接在测试项目目录下执行以下CLI命令完成安装:

  • 安装覆盖率数据采集工具:
    dotnet add package coverlet.collector
  • 安装可视化报告生成工具:
    dotnet add package ReportGenerator

2. 配置覆盖率过滤规则(可选)

如果你需要排除测试代码、第三方依赖、自动生成代码等不需要统计的内容,可在测试项目根目录新建coverlet.runsettings配置文件,示例内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<RunSettings>
  <DataCollectionRunSettings>
    <DataCollectors>
      <DataCollector friendlyName="XPlat code coverage">
        <Configuration>
          <!-- 仅统计目标WebAPI项目的代码,替换为你实际的WebAPI程序集名称 -->
          <Include>[YourWebApiProjectName]*</Include>
          <!-- 排除测试项目、SpecFlow相关项目 -->
          <Exclude>[*Tests]*,[*.Specs]*</Exclude>
          <!-- 排除标记了自动生成特性的代码 -->
          <ExcludeByAttribute>GeneratedCodeAttribute</ExcludeByAttribute>
          <!-- 排除指定目录/文件,比如EF迁移文件、启动入口文件等 -->
          <ExcludeByFile>**/Migrations/*,**/Program.cs</ExcludeByFile>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>

注意:配置中的YourWebApiProjectName需要替换为你实际的WebAPI项目的程序集名称

3. 执行测试并采集覆盖率数据

在测试项目目录下打开终端,执行对应命令:

  • 如果你使用了自定义的runsettings配置:
    dotnet test --collect:"XPlat Code Coverage" --settings coverlet.runsettings
  • 不需要自定义规则可直接执行:
    dotnet test --collect:"XPlat Code Coverage"

命令执行完成后,会在测试项目的TestResults目录下生成一个随机GUID命名的子文件夹,里面的coverage.cobertura.xml就是原始覆盖率数据文件。

4. 生成可视化HTML报告

首先全局安装ReportGenerator命令行工具(如果之前没装过):
dotnet tool install -g dotnet-reportgenerator-globaltool

然后执行报告生成命令,注意替换命令中的{xml文件路径}为上一步生成的coverage.cobertura.xml的实际本地路径:
reportgenerator -reports:"{xml文件路径}" -targetdir:"CoverageReport" -reporttypes:Html

5. 查看覆盖率结果

打开生成的CoverageReport目录,双击index.html即可在浏览器中查看完整的覆盖率统计数据,支持按命名空间、类、方法维度查看,未覆盖的代码行会做明确标记。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 07:57:03