Jacoco+Jenkins持续集成配置覆盖率

一、Jacoco引入包依赖及配置

idea默认自带的插件,统计出来的覆盖率只包含classes、method、line,不太详细,这里我们使用JaCoCo插件来统计,在maven的pom文件中如下配置:

1、引入依赖

  <!-- jacoco jar包引用 -->
        <dependency>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.2</version>
        </dependency>

2、配置plugins

            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.3</version>
                <configuration>
                    <skip>false</skip>
                    <destFile>target/coverage-reports/jacoco.exec</destFile>
                </configuration>
                <executions>
                    <execution>
                        <id>prepare-agent</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>report</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>post-unit-test</id>
                        <phase>test</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                        <configuration>
                            <dataFile>target/coverage-reports/jacoco.exec</dataFile>
                            <outputDirectory>target/coverage-reports</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

3、注意: 以下两个地方路径和文件名都要一致,不然会有问题。
Jacoco+Jenkins持续集成配置覆盖率_第1张图片
在这里插入图片描述

二、先本地执行测试用例

1、在终端执行命令>mvn test,回车
Jacoco+Jenkins持续集成配置覆盖率_第2张图片
2、遇到的问题:
执行命令后,发现测试用例跳过了
在这里插入图片描述
解决办法:
很多时候开发都会设置跳过测试,在pom.xml文件中改成不跳过测试即可。
Jacoco+Jenkins持续集成配置覆盖率_第3张图片
3、本地执行成功后,查看target/coverage-reports/目录下生成.exec文件和index.html文件。
Jacoco+Jenkins持续集成配置覆盖率_第4张图片

  • 打开index.html文件,可查看覆盖率情况,我这边显示覆盖率为0(还没写东西)
    Jacoco+Jenkins持续集成配置覆盖率_第5张图片
  • 本地执行成功后,提交代码至svn后,可在Jenkins上集成配置覆盖率。

三、Jenkins使用Jacoco插件构建项目配置

1、我这里针对financing_test项目做了配置。
2、在jenkins的可选插件中,选中 jacoco-plugin 插件直接下载。
3、增加构建后操作步骤 -->Record JaCoco coverage report
Jacoco+Jenkins持续集成配置覆盖率_第6张图片
4、开始详细配置

  • 文件路径等配置,注意这里的路径都是jenkins上工作空间的相对路径
    Jacoco+Jenkins持续集成配置覆盖率_第7张图片
  • 覆盖率配置

(1)这里 %Method 对应太阳这一列的值 设置为 100:表示每个方法都要被执行,整个项目才能稳定构建;只要有一个方法没有被执行,整个项目就会构建不稳定。

注释: 项目的真实代码覆盖率 jenkins会计算出来的

比如: 当你的method那一列 太阳对应的值为 100 ,而你的项目中 总共有10个方法,其中有8个被执行了,还有2个没有被执行,那么你的真实代码覆盖率为 80,这时候整个项目构建结果为 unstable (黄色标识)
Jacoco+Jenkins持续集成配置覆盖率_第8张图片

四、Jenkins使用Publish Html reports展示覆盖率报告

1、前提:下载插件HTML Publisher plugin
2、增加构建后操作步骤 -->Publish Html reports
Jacoco+Jenkins持续集成配置覆盖率_第9张图片
3、这个路径是相对于工作空间的。
Jacoco+Jenkins持续集成配置覆盖率_第10张图片
4、注意:这个插件不会自动按照上面的路径创建文件夹和文件,所以,一定要确保上面路径上的文件夹和文件已经在工作空间创建好,不然会出现报错。也就是说,这个插件是不创建任何html内容的。

  • 以下是我构建已经生成的index.html文件。
    Jacoco+Jenkins持续集成配置覆盖率_第11张图片
    5、构建后效果
    • 上面配置好之后,进行保存,并点击【Build Now】进行测试。
      Jacoco+Jenkins持续集成配置覆盖率_第12张图片

    • 完成后,在项目左上角有个Jacoco HTML Report的按钮,点进去即可。
      Jacoco+Jenkins持续集成配置覆盖率_第13张图片

    • 点进去如下所示。
      Jacoco+Jenkins持续集成配置覆盖率_第14张图片

五、项目之间有依赖

注意: 如果项目间存在依赖的,要先构建被依赖的项目。
1、比如我的financing_test项目依赖common_test
Jacoco+Jenkins持续集成配置覆盖率_第15张图片
2、先构建common_test
(1)本地的话,切换到commom_test目录下,执行mvn clean install命令。然后再切回到financing_test目录下,执行mvn test命令

  • install 将包安装至本地仓库,以让其他项目依赖
    Jacoco+Jenkins持续集成配置覆盖率_第16张图片
    (2)在Jenkins上,先构建common_test,再构建financing_test
    Jacoco+Jenkins持续集成配置覆盖率_第17张图片
    (3)我的common_test项目配置很简单,主要就是配置了源码管理。
    • General
      Jacoco+Jenkins持续集成配置覆盖率_第18张图片
    • 源码管理
      Jacoco+Jenkins持续集成配置覆盖率_第19张图片
    • Pre Steps
      Jacoco+Jenkins持续集成配置覆盖率_第20张图片

你可能感兴趣的:(测试框架)