介绍
JaCoCo是一个开源的覆盖率工具,它针对的开发语言是java,其使用方法很灵活,可以嵌入到Ant、Maven中;可以作为Eclipse插件,可以使用其JavaAgent技术监控Java程序等等。官网(Jacoco)[https://www.eclemma.org/jacoco/]
覆盖率计数器
1. 行覆盖
2. 类覆盖
3. 方法覆盖
4. 分支覆盖
5. 指令覆盖
6. 圈复杂度
原理
Jacoco使用插桩的方式来记录覆盖率数据。
插桩模式有两种:
1. on-the-fly模式
JVM通过 -javaagent参数指定jar文件启动代理程序,代理程序在ClassLoader装载一个class前判断是否修改class文件,并将探针插入class文件,探针不改变原有方法的行为,只是记录是否已经执行。
2. offline模式
在测试之前先对文件进行插桩,生成插过桩的class或jar包,测试插过桩的class和jar包,生成覆盖率信息到文件,最后统一处理,生成报告。
集成Maven
下载配置JDK,Maven,Jacoco
Manven配置(Maven Plug-in)[https://www.eclemma.org/jacoco/trunk/doc/maven.html]
用下载的Jacoco的example里的例子演示
1 | C:\Test\Jacoco>mvn install |
Maven构建成功之后,生成代码覆盖报告(\target\site\jacoco)
集成Git和Jenkins
把example上传到Github上
配置Jenkins,回传报告
配置Jacoco Coverage Report
Coverage Trend