• 二开Jacoco + codediff 实现增量覆盖率报告


    一、教学视频:https://www.bilibili.com/video/BV1tr4y1i7f1?p=9

    二、前期准备

    下载 Maven:https://maven.apache.org/download.cgi

    安装配置 Maven: https://blog.csdn.net/m0_67402564/article/details/123891208

    配置阿里云 Maven 镜像加速:https://developer.aliyun.com/mvn/guide

    安装 eclipse 和 Java JDK

    ————————————————————————————————————————————

    准备一个Java SpringBoot 被测项目:https://gitee.com/dzitcast/springbootdemo

    安装启动:在项目 pom.xml  目录下,cmd 命令 mvn clean, 然后mvn install,重命名生成的 jar 包 springbootdemo.jar

    启动项目:java -jar springbootdemo-0.0.1-SNAPSHOT.jar

    测试项目 postman 访问:http://127.0.0.1:18082/emp/selectAIIEmpByPage

    ————————————————————————————————————————————

    下载Jacoco:https://www.jacoco.org/jacoco/index.html

    解压取出:jacocoagent.jar

    ————————————————————————————————————————————

    gitee项目:Jacoco 二开项目 https://gitee.com/Dray/jacoco

    二次开发编译好的 cli.jar 包 https://gitee.com/Dray/jacoco/releases (注意!:选 org.jacoco.cli-0.8.7-SNAPSHOT-nodeps.jar , 重命名为 jacococli2.jar)

    ————————————————————————————————————————————

    gitee项目:code-diff https://gitee.com/Dray/code-diff

    修改application.yml  配置文件中 Git 的账号 密码 和本地项目仓库目录地址

    code-diff\application 目录下,maven clean , maven install,生成 一个 application-1.0.0-SNAPSHOT.jar 包

    java -jar application-1.0.0-SNAPSHOT.jar 启动

    本地访问:http://127.0.0.1:8085/doc.html

    配置 git 项目 token :Authorization(apiKey)

    在调试里面:填上 项目git 地址 和 git commit 上下版本号 ,点击发送即可

    三、使用教程

    以下文件移动到被测项目根目录:

      被测项目 jar 包 :springbootdemo.jar

      jacocoagent.jar

      org.jacoco.cli-0.8.7-SNAPSHOT-nodeps.jar 重命名为 jacococli2.jar

    使用步骤:

      0、前去修改被测 Java springboot 项目的代码,使得代码有版本的差异

      1、用 Jacocoagent 启动项目收集覆盖率信息,然后测试项目生成覆盖率数据

    java -javaagent:jacocoagent.jar=includes=*,output=tcpserver,port=6300,address=localhost,append=true -jar springbootdemo.jar

           2、测试完后,用二次开发的 cli 包生成 exec 文件

    java -jar jacococli2.jar dump --address 127.0.0.1 --port 6300 --destfile springbootdemo.exec

      3、通过 code-diff 服务获取两次提交的代码差异:详细看视频=》 jacoco增量应用,拿到变更的 json 数据

    [{\"classFile\":\"me/xz/controller/UserController\",\"lines\":[{\"endLineNum\":70,\"startLineNum\":69,\"type\":\"REPLACE\"}],\"methodInfos\":[{\"methodName\":\"login\",\"parameters\":\"User\"}],\"moduleName\":\"src\",\"type\":\"MODIFY\"},{\"classFile\":\"me/xz/bean/User\",\"lines\":[{\"endLineNum\":28,\"startLineNum\":20,\"type\":\"INSERT\"}],\"methodInfos\":[{\"methodName\":\"getPassword\",\"parameters\":\"\"},{\"methodName\":\"getUsername\",\"parameters\":\"\"}],\"moduleName\":\"src\",\"type\":\"MODIFY\"}]

      4、用二次开发的 cli 包生成 report 增量覆盖率报告

    java -jar jacococli2.jar report springbootdemo.exec --classfiles target\classes --sourcefiles src\main\java --html html-report-diff --xml report-diff.xml --diffCode "[{\"classFile\":\"me/xz/controller/UserController\",\"lines\":[{\"endLineNum\":70,\"startLineNum\":69,\"type\":\"REPLACE\"}],\"methodInfos\":[{\"methodName\":\"login\",\"parameters\":\"User\"}],\"moduleName\":\"src\",\"type\":\"MODIFY\"},{\"classFile\":\"me/xz/bean/User\",\"lines\":[{\"endLineNum\":28,\"startLineNum\":20,\"type\":\"INSERT\"}],\"methodInfos\":[{\"methodName\":\"getPassword\",\"parameters\":\"\"},{\"methodName\":\"getUsername\",\"parameters\":\"\"}],\"moduleName\":\"src\",\"type\":\"MODIFY\"}]" --encoding=utf-8

      5、获取全量覆盖率报告

    java -jar jacococli2.jar report springbootdemo.exec --classfiles target\classes --sourcefiles src\main\java --html html-report --xml report.xml  --encoding=utf-8

    总结:

    修改Java SpringBoot被测项目代码,使得代码有版本的差异

    =》用 Jacoco agent 启动 Java SpringBoot被测项目,开始收集测试项目覆盖率数据

    = 》 测试完后用 二次开发的 cli 包生成 exec 文件 

    =》通过 code-diff 服务获取两次提交的代码差异:详细看视频=》 jacoco增量应用,拿到变更的 json 数据

    =》用二次开发的 cli 包生成 report 增量覆盖率报告

  • 相关阅读:
    css去掉iPhone、iPad默认按钮样式
    STL~Deque简介
    Centos 7 ssh登录速度慢
    C++ delete 两次
    编译gdb 报错 No module named gdb.frames
    gdb 脚本
    转载: CentOS/Linux 解决 SSH 连接慢
    百度经验:Win10查看已存储WiFi密码的两种方法
    git 操作
    Avoiding memory leaks in POSIX thread programming, 多线程避免内存泄漏
  • 原文地址:https://www.cnblogs.com/Ootori/p/16215986.html
Copyright © 2020-2023  润新知