jck28 - 小柒 - 代码覆盖率集成

一, 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配置