一, Jacoco 简介
-
开源代码覆盖率工具,支持Java、Kotlin
-
计算测试代码对项目的覆盖情况
-
定位测试未覆盖到的代码部分,帮助提升测试有效性
-
检查程序中的废代码,反推代码设计过程中的不合理逻辑,提升代码质量
-
测试代码覆盖率高低是衡量代码质量的因素之一
-
原理:Java 探针,字节码插桩技术
-
代码覆盖率统计维度
- 指令 (Instruction)
- 分支 (Branch)
- 圈复杂度 (Cyclomatic Complexity)
- 行 (Line)
- 方法 (Method)
- 类 (Class)
二, Jacoco 代码覆盖率检查持续集成环境准备
- Jenkins 服务+节点已部署Java + Maven
- Jenkins上已安装JaCoCo Plugin 插件
- JaCoCo 代码覆盖率检查项目: ytq12875/iTest
- 项目配置: Java + JUnit + Maven + JaCoCo Plugin
三, 新建job
1,项目的pom文件导入jacoco相关依赖
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.3</version>
<executions>
<execution>
<id>default-prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>default-report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
<execution>
<id>default-check</id>
<goals>
<goal>check</goal>
</goals>
<configuration>
<rules>
<rule implementation="org.jacoco.maven.RuleConfiguration">
<element>BUNDLE</element>
<limits>
implementation is needed only for Maven 2
<limit implementation="org.jacoco.report.check.Limit">
<counter>COMPLEXITY</counter>
<value>COVEREDRATIO</value>
<minimum>0.60</minimum>
</limit>
</limits>
</rule>
</rules>
</configuration>
</execution>
</executions>
</plugin>
2,新建job配置
-
其余配置同上
-
构建后操作:
-
运行job任务