本篇内容主要介绍:在gradle项目中添加jacoco来了解工程的代码覆盖情况。
自动化的统计代码覆盖情况,有助于将焦点问题可视化,从而决定什么时候采取什么动作进行改进。Jacoco可以方面的添加在测试执结束,进行代码覆盖率的统计。如果我们对代码覆盖率有要求,那么通过Jacoco可以覆盖率的阀值,低于阀值则不允许通过。
本章将从如何在gradle项目添加Jacoco开始。
代码地址:Code
1,创建一个空白的Gradle项目(如果已有项目可以跳过该部分)
通过Intellij IDEA生成一个Gradle项目。build.gradle文件如下。
其中:
test中指明了使用Junit测试。
dependencies中添加了依赖的JUnit5和断言工具AssertJ。
2,在build.gradle中添加Jacoco的配置
添加完成如下:
在build.gralde的文件的底部,新添加了jacoco插件,并指定其版本使用0.8.5(查看其他可选版本),然后指定允许生成html格式的报告,最后指定在测试运行之后来自动生成报告。
在工程根目录下执行如下命令
运行结束后,会在项目根目录下的 build/reports/jacoco (如下图)生成覆盖率报告文件。
3, 添加实际代码后,查看报告详情
我们添加一个测试类ParkingLotTest。从完成测试需要的实现代码。
ParkingLotTest.java
ParkingLot.java
Car.java
Ticket.java
ParkFailException.java
代码结构
执行 ./gradlew clean build 生成代码覆盖率报告。
打开报告,我们可以看到统计情况。
package下的覆盖率情况,如下图。
点击package名称,能够查看类的覆盖率情况,如下图。
点击class名称,能够继续查看class中method的覆盖率情况,如下图。
继续点击method名,能够看到详细代码中的覆盖情况,如下图。
总结
结合前面的两个工具(checkstyle、PMD),我们就能够本地即使得到反馈。相比代码推送到pipline中才知道结果,本地的反馈更加快速和及时。开发人员不用每日化时间在那些简单的、重复的代码问题上,留下更多的时间在Code Review来讨论更有价值的技术问题。
扩展阅读:
《00简单3步实现技术提升个人和团队效率》zhuanlan.zhihu.com《01实战CheckStyle》zhuanlan.zhihu.com《02实战PMD》zhuanlan.zhihu.com