.NET 使用 Coverlet 统计单元测试覆盖率
2023-06-13 09:15:37 时间
代码覆盖率(Code coverage)是指在软件测试中测试用例执行时覆盖的代码量与总代码量的比例。代码覆盖率是软件测试中一个重要的指标,它对于保障软件质量、提高软件可靠性和可维护性具有许多好处:发现代码缺陷、提高代码的可维护性、确保代码的正确性和优化测试用例质量等。
我们常用的 IDE,Visual Studio、Rider 等都直接查看覆盖率,但是如果我们想将覆盖率的管控,配置到自动化的质量管控流程里,如 Github Actions、Azure Devops、Github CI 和 Sonarqube 等,需要我们额外做一些工作。这里我们可以借助开源项目 Coverlet(https://github.com/tonerdo/coverlet)
1.使用 Coverlet
默认情况下执行 dotnet test
的结果:
1.1 方式一
安装 Nuget 包
dotnet add package coverlet.msbuild
然后执行测试命令
dotnet test /p:CollectCoverage=true
可以看到控制台会输出覆盖率结果,并且也会输出到 json 文件。
1.2 方式2
安装 .NET Global Tool
dotnet tool install --global coverlet.console
然后执行 coverlet 命令
coverlet /path/to/test-assembly.dll --target "dotnet" --targetargs "test /path/to/test-project --no-build"
还是推荐第一种方式比较省事。
2.更改输出格式
Coverlet 的默认输出格式是 Json,如果要接入 codecov.io 等平台的话是需要 opencover 格式的,通过 CoverletOutputFormat
参数指定。
示例:
dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=opencover
3.参考资料
相关文章
- .Net 7 的 AOT 和 CLR有什么区别?
- java.net.BindException: 地址已在使用 (Bind failed)详解程序员
- MongoDB 使用.NET开发充分利用数据库性能(mongodb.net)
- C#/.NET堆与栈
- 数据库使用.NET连接MySQL数据库(net连接mysql)
- Oracle NET突破技术界限,精彩开启新纪元(oracle net??)
- 基于NET技术的Oracle信息服务(.net用oracle)
- 使用Net实现Oracle数据库的快速导入(net导入oracle)
- NET与MySQL的无限结合(.net 连接mysql)
- NET环境下MySQL数据库的使用实践(.net支持mysql吗)
- NET备份MySQL提升数据安全性(.net 备份mysql)
- Net中连接MySQL技术简述(.net中引用mysql)
- 型使用NET与MySQL开发动态类型Web应用程序(.net mysql 类)
- NET 与 MySQL 结合能实现优雅的数据事务处理(.net MySQL事物)
- .Net中导出数据到Excel(asp.net和winform程序中)
- .NET缓存设计的使用说明
- asp.net通过动态加载不同CSS实现多界面