搭建jacoco检测代码覆盖率

news/2024/10/11 11:36:14/

一、前言

前两天突然看到了这个jacoco,想着搭建了可以查看功能测试覆盖率和自动化脚本的覆盖率。

然后简单的研究了一下怎么使用和搭建。

二、准备

1、官网下载:jacoco

2、ruoyi前后端不分离版本

三、开始

1、服务器先配置java运行环境

2、然后打若依的jar包(这个可以去看若依的官网,很详细)

3、因为我是多模块版本的,jar包在ruoyi-admin下面的target里面

4、使用java启动命令的时候添加jacoco的命令

java -javaagent:/www/wwwroot/jacoco/lib/jacocoagent.jar=destfile=/www/wwwroot/jacoco/lib/to/coverage.exec,output=tcpserver,port=6300 -jar /www/wwwroot/jacoco/RuoYi/ruoyi-admin/target/ruoyi-admin.jar

注意:上面那个路径是我的jacoco和项目存放的地址,你要改成你自己的

启动之后就是这样。

5、测试结束后,生成数据文件coverage.exec

使用命令
注意:路径和端口要改为自己的。

java -jar /www/wwwroot/jacoco/lib/jacococli.jar dump --address localhost --port 6300 --destfile /www/wwwroot/jacoco/lib/to/coverage.exec

6、生成html的报告。

java -jar /www/wwwroot/jacoco/lib/jacococli.jar report /www/wwwroot/jacoco/lib/to/coverage.exec \--classfiles /www/wwwroot/jacoco/RuoYi/ruoyi-admin/target/classes \--sourcefiles /www/wwwroot/jacoco/RuoYi/ruoyi-admin/src/main/java \--html /www/wwwroot/jacoco/report/html \--xml /www/wwwroot/jacoco/report/report.xml \--csv /www/wwwroot/jacoco/report/report.csv

生成之后点击index.html

就可以查看报告了。比如登录绿色就是覆盖到的,红色就是没有。

四、简化启动

查看完覆盖率之后,如果想重置覆盖率,还要关闭项目,运行好几条命令,所以写了一个脚本简化了一下。比如你想重置覆盖率的时候。运行下面这个脚本。

新建一个run.sh文件在服务器,代码放下最下面,记得路径和端口改为自己的。

运行后得到

输入对应的1234就可以

重置的话
1、先停止项目
2、然后去删除coverage.exec文件
3、启动项目
4、进行测试(手工测试或自动化脚本)
5、测试结束后,生成coverage.exec文件
6、生成报告

#!/bin/bash# 定义变量
JACOCO_CLI="/www/wwwroot/jacoco/lib/jacococli.jar"
PROJECT_JAR="/www/wwwroot/jacoco/RuoYi/ruoyi-admin/target/ruoyi-admin.jar"
COVERAGE_EXEC="/www/wwwroot/jacoco/lib/to/coverage.exec"
CLASSES_DIR="/www/wwwroot/jacoco/RuoYi/ruoyi-admin/target/classes"
SOURCE_DIR="/www/wwwroot/jacoco/RuoYi/ruoyi-admin/src/main/java"
REPORT_DIR="/www/wwwroot/jacoco/report"
PORT=6300# 获取 ruoyi-admin.jar 进程的 PID
get_pid() {PID=$(ps aux | grep "$PROJECT_JAR" | grep -v grep | awk '{print $2}')
}# 启动项目
start_project() {get_pidif [ -z "$PID" ]; thenecho "Starting project..."nohup java -javaagent:/www/wwwroot/jacoco/lib/jacocoagent.jar=destfile=$COVERAGE_EXEC,output=tcpserver,port=$PORT -jar $PROJECT_JAR > /dev/null 2>&1 &echo "Project started."elseecho "Project is already running with PID: $PID"fi
}# 停止项目
stop_project() {get_pidif [ -n "$PID" ]; thenecho "Stopping project with PID: $PID"kill $PIDecho "Project stopped."elseecho "Project is not running."fi
}# 生成 coverage.exec
generate_coverage_exec() {echo "Generating coverage.exec from JaCoCo agent..."java -jar $JACOCO_CLI dump --address localhost --port $PORT --destfile $COVERAGE_EXECecho "coverage.exec generated."
}# 生成报告
generate_report() {echo "Generating JaCoCo report..."java -jar $JACOCO_CLI report $COVERAGE_EXEC \--classfiles $CLASSES_DIR \--sourcefiles $SOURCE_DIR \--html $REPORT_DIR/html \--xml $REPORT_DIR/report.xml \--csv $REPORT_DIR/report.csvecho "Report generated at $REPORT_DIR/html."
}# 菜单显示
show_menu() {echo "=============================="echo "  Project Control Menu"echo "=============================="echo "1) 启动项目"echo "2) 停止项目"echo "3) 生成 coverage.exec"echo "4) 生成覆盖率报告"echo "Ctrl+C 退出"echo "=============================="echo -n "请选择一个选项: "
}# 主循环
while true; doshow_menuread -r optioncase $option in1)start_project;;2)stop_project;;3)generate_coverage_exec;;4)generate_report;;*)echo "无效选项,请重新选择。";;esac
done

http://www.ppmy.cn/news/1537429.html

相关文章

黑马javaWeb笔记重点备份2:mybatis基础(注解方式)、数据库连接池概念、lombok使用

以下均来自:【黑马程序员JavaWeb开发教程,实现javaweb企业开发全流程(涵盖SpringMyBatisSpringMVCSpringBoot等)】 https://www.bilibili.com/video/BV1m84y1w7Tb/?p75&share_sourcecopy_web&vd_source9332b8fc5ea8d349a…

汽车网关(GW)技术分析

一、引言 在现代汽车电子系统中,汽车网关(Gateway,简称 GW)扮演着至关重要的角色。随着汽车电子技术的不断发展,汽车内部的电子控制单元(Electronic Control Unit,简称 ECU)数量不断…

使用GitLab CI构建持续集成案例

1. 部署GitLab (1)基础准备 解压软件包并导入镜像: [rootmaster ~]# curl -O http://mirrors.douxuedu.com/competition/Gitlab-CI.tar.gz [rootmaster ~]# tar -zxvf Gitlab-CI.tar.gz [rootmaster ~]# ctr -n k8s.io image import gitla…

计算机视觉的应用36-人工智能时代计算机视觉技术在电力系统中的应用

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用36-人工智能时代计算机视觉技术在电力系统中的应用。本文综述了人工智能时代计算机视觉技术在电力系统中的应用。文章首先介绍了项目背景,随后详细阐述了计算机视觉技术的模型、技术原理…

学习小课堂

1.多服务节点下Session-Cooki方案如何做? Session-Cookie 方案在单体环境是一个非常好的身份认证方案。但是,当服务器水平拓展成多节点时,Session-Cookie 方案就要面临挑战了。 举个例子:假如我们部署了两份相同的服务 A&#x…

Scala面试题大全~基础题(15题)

1:Scala是什么? Scala是一种多范式的编程语言,它结合了面向对象编程和函数式编程的特性,它支持面向对象、函数式和命令式编程方法。Scala运行在Java虚拟机(JVM)上,这意味着它可以与Java代码无缝集成。它还…

【正点原子K210连载】第四十四章 人脸68关键点检测实验 摘自【正点原子】DNK210使用指南-CanMV版指南

第四十四章 人脸68关键点检测实验 在上一章节中,介绍了利用maix.KPU模块实现了人脸属性分析,本章将继续介绍利用maix.KPU模块实现的人脸68关键点检测。通过本章的学习,读者将学习到人脸68关键点检测应用在CanMV上的实现。 本章分为如下几个小…

蓝桥杯:求平均年龄

#include<stdio.h> int main() { int num 0; float age 0,sum0; printf("请输入总人数: "); scanf_s("%d" ,& num); for (int i1; i <num;i) { scanf_s("%f", &age); sum age…