Visual Studio 2019+ 内置测试覆盖率需手动触发:测试 → 分析代码覆盖率 → 所有测试;.NET Core/5+ 推荐用 coverlet(添加 Coverlet.Collector 包),命令行执行 dotnet test –collect:”XPlat Code Coverage” 生成报告。
Visual Studio 自带的测试覆盖率怎么开
Visual Studio 2019 及以上版本(含 Community 版)已内置测试覆盖率功能,但默认不显示——需要手动触发。关键不是装插件,而是跑测试时带上覆盖率采集开关。
- 确保项目是 .NET Framework 或 .NET Core/.NET 5+(.NET Core 3.1+ 支持更稳定)
- 测试项目需引用
Microsoft.NET.Test.Sdk,且使用dotnet test或 VS 的“测试资源管理器”运行 - 在 VS 中:点击菜单栏 测试 → 分析代码覆盖率 → 所有测试(或右键单个测试 → “分析代码覆盖率”)
- 首次运行后,底部状态栏会出现“代码覆盖率”窗口,双击文件可跳转到具体行——未覆盖的行会标灰
dotnet cli 下用 coverlet 生成覆盖率报告
VS 内置工具对 .NET Core/.NET 5+ 项目有时识别不全(尤其多项目、自定义 SDK 时),coverlet 是目前最稳的跨平台方案,输出格式也更灵活。
- 在测试项目中添加 NuGet 包:
Coverlet.Collector(注意不是Coverlet.MsBuild,后者已过时) - 命令行执行:
dotnet test --collect:"XPlat Code Coverage" - 会生成
coverage.cobertura.xml文件;可用reportgenerator转 HTML:dotnet tool install -g dotnet-reportgenerator-globaltool,再运行reportgenerator "-reports:coverage.cobertura.xml" "-targetdir:coveragereport" - 打开
coveragereport/index.html即可交互查看——支持按类、方法、行级展开
为什么某些代码没被计入覆盖率
不是所有“写了代码”就自动参与统计,coverlet 和 VS 都遵循 ECMA-335 标准的 IL 级别采样逻辑,常见漏计原因很具体: