在项目中做单元测试已经是一件必不可少并且大家都认可的任务。
有了单元测试,还需要直观的看到单元测试的代码覆盖率,还有具体的报告。
有了覆盖率的报告,还需要支持CI/CD平台读取这个报告内容。
一: 整合maven 和 cobertura
我们目前使用的代码覆盖率工具是Cobertura, 具体的使用方式如下:
1 cd {项目根目录}
2 mvn cobertura:cobertura
生成的报告会在 target/site/cobertura/index.html中, 在浏览器中可以查看该报告,
报告形式如截图:
左边栏的数字代表被单元测试代码测试的次数, 0 说明该行代码从来没有被测试过
二 Gitlab 读取覆盖率报告
1 在Gitlab CI yaml中的unit_test job中加入对cobertura的CI,
这样每次代码提交后都会执行覆盖率的任务,并且会过滤报告内容给gitlab CI:
2 以仓库服务为例,打开gitlab页面 Settings→CI/CI Pipelines
3 在 Test coverage parsing中输入以下正则表达式用于读取过滤后的覆盖率
4 在项目的README.md中插入以下内容用于显示具体覆盖率:
[![coverage report](https://gitlab.sdtdev.net/dcs/parts-stocking-warehouse/badges/develop/coverage.svg?job=unit_test)](https://gitlab.sdtdev.net/dcs/parts-stocking-warehouse/commits/develop?job=unit_test)
经过这样的设置,从开发人员到项目管理人员都可以很直观的看到单元测试的覆盖率了。