2020-02-28

目录 

0 整体思路
1 安装版本
2 全局工具配置
3 Jenkins创建JacocoIntegrateTestDemo项目
  3.1 配置源码管理
  3.2 配置构建
  3.3 配置构建后操作
4 执行JacocoIntegrateTestDemo项目,查看代码覆盖率

 

0 整体思路


  返回

  1. 启动被测系统  
    java -javaagent:D:/software/jacoco/lib/jacocoagent.jar=includes=*,output=tcpserver,port=6300,address=10.8.116.81,append=true -jar D:/Code/jacocodemo/target/jacocodemo.jar --server.port=9999
  2. 执行测试脚本(可通过postman执行,或自动化测试脚本)
  3. 通过jenkins Job收集展示覆盖率报告
    1. 拉取codenet上的JacocoDemo的代码(ant的build.xml也放在源代码根目录下)
    2. 编译源代码生成class文件(jacoco生成report需要)
    3. ant dump拉取覆盖率信息jacoco.exec
    4. 配置jacoco coverage report展示覆盖率信息

1 安装版本

jenkins-2.150.3

jenkins插件

jenkins -> 系统管理 -> 插件管理

  • git
  • jacoco
  • maven

Jenkins集成jacoco收集集成测试覆盖率

Jenkins集成jacoco收集集成测试覆盖率

Jenkins集成jacoco收集集成测试覆盖率

图1 插件git、jacoco、maven

 2 全局工具配置


 返回

jenkins -> 系统管理 -> 全局工具配置

以便在window批处理中使用

Jenkins集成jacoco收集集成测试覆盖率

图2 jdk git maven全局配置

3 Jenkins创建JacocoIntegrateTestDemo项目


 返回

Jenkins集成jacoco收集集成测试覆盖率

图3 新建自由风格的软件项目

3.1 配置源码管理

  • Repository Url: git@e.coding.net:Ming8006/jacocodemo.git
  • Credentials: ming

Jenkins集成jacoco收集集成测试覆盖率

图4 配置源码管理

上图4源码管理配置中,点击 立即构建 JacocoIntegrateTestDemo项目 时,会拉取 git@e.coding.net:Ming8006/jacocodemo.git 到jenkins部署的机器目录下: D:\Program Files (x86)\Jenkins\workspace\JacocoIntegrateTestDemo 

 在上图4中,源码管理的凭据是 ming ,凭据设置如下

Jenkins->凭据->系统->添加域

Jenkins集成jacoco收集集成测试覆盖率

图5 添加域e.coding.net

Jenkins集成jacoco收集集成测试覆盖率

图6 在域中添加ssh凭据

在上图6中,添加ssh的private key,jekins通过ssh 拉取代码 git@e.coding.net:Ming8006/jacocodemo.git ,需在coding.net上添加公钥,如下图

Jenkins集成jacoco收集集成测试覆盖率

图7 电脑生成的公钥私钥

Jenkins集成jacoco收集集成测试覆盖率

图8 添加公钥到codenet个人账户

3.2 配置构建

 Jenkins集成jacoco收集集成测试覆盖率

图9 构建配置

在上图9中,做2步构建操作:

  • 添加window批处理命令,在jenkins workspace目录项目JacocoIntegrateTestDemo下执行mun clean compile生成class文件
  • 安装build.xml的配置获取覆盖率信息jacoco.exec

注意:在获取覆盖率信息前,先postman调用JacocoDemo程序的接口

build.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<project name="JacocoDmo" xmlns:jacoco="antlib:org.jacoco.ant" default="jacoco">
  <!--Jacoco 的安装路径-->
  <property name="jacocoantPath" value="D:\software\jacoco\lib\jacocoant.jar"/>
  <!--最终生成 .exec 文件的路径,Jacoco 就是根据这个文件生成最终的报告的-->
  <property name="jacocoexecPath" value=".\target\jacoco.exec"/>
  <!--远程 Tomcat 服务的 ip 地址-->
  <property name="server_ip" value="10.8.116.81"/>
  <!--前面配置的远程 Tomcat 服务打开的端口,要跟上面配置的一样-->
  <property name="server_port" value="6300"/>

  <!--让 ant 知道去哪儿找 Jacoco-->
  <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
      <classpath path="${jacocoantPath}" />
  </taskdef>

  <!--dump 任务:
      根据前面配置的 ip 地址,和端口号,
      访问目标 Tomcat 服务,并生成 .exec 文件。-->
  <target name="dump">
      <jacoco:dump address="${server_ip}" reset="false" destfile="${jacocoexecPath}" port="${server_port}" append="true"/>
  </target>
</project>
View Code

相关文章: