java代码实现单元测试jacoco覆盖率收集生成多模块聚合报告


背景

持续集成项目,完善单元测试的能力
获取单元测试通过率(mvn test 获取surefire report),获取代码覆盖率(jacoco)
本次实践基于jenkins环境 以及 jenkins - jacoco插件
收集覆盖率统计结果跟生成jacoco报告文件无关,生成jacoco聚合报告文件不依赖jenkins环境,请各位有需要的看官认真查看
maven单测已完成测试,此插件方案应该适用于java语言 gradle、android(前提已生成exec文件)


一、准备工作 - 生成exec文件

maven插件的使用方式:
- 在pom.xml文件里配置插件
- 使用命令行加载
pom文件配置网上很多资料,跳过了,也不是此文关注点。因为是持续集成,需要给各种项目做编译,并不只是自己的,因此不能改变用户的代码情况下,使用命令行形式为佳。

命令行形式:
- maven测试命令:mvn clean test
- 配置命令:-Dautoconfig.skip=true -Dmaven.test.skip=false -Dmaven.test.failure.ignore=true
- maven的jacoco插件:org.jacoco:jacoco-maven-plugin:0.8.5:prepare-agent
- 运行单元测试并生成exec:
mvn org.jacoco:jacoco-maven-plugin:0.8.5:prepare-agent clean test -Dautoconfig.skip=true -Dmaven.test.skip=false -Dmaven.test.failure.ignore=true
附:
- gradle、android的exec文件生成:在项目根目录放入一个.gradle文件,命令行加载编译
- ./gradlew --init-script init.gradle clean build
不是专业的就不细讲啦~


二、准备工作 - 引入依赖

<dependency>
	<groupId>org.jacoco</groupId>
	<artifactId>jacoco-maven-plugin</artifactId>
	<version>0.8.5</version>
</dependency>

jacoco-maven-plugin里包含了org.jacoco.core,org.jacoco.report都是必要的。
因为是在jenkins插件开发,开发中遇到过依赖冲突问题,困扰几天的奇怪的bug最终也是依赖问题,认真对待依赖很重要

三、利用jenkins-jacoco插件源码收集覆盖率结果

jacoco插件的JacocoPublisher类 perform方法为执行入口
一番分析后提取核心代码占为己有*-*

其实以下代码都是jacoco插件源码的抽取,方便自己开发插件,扩展功能,如jacoco增量覆盖率检测,自定义前端样式
写文章时候才发现很多类都是基于jenkins,普通项目不一定很好移植,本地@test可行估计也是准备了一定的环境,但是还是觉得应该能成功的
public class JacocoCore {
   
 private String rootDir = "/data/myapp";
 private String execsPattern = "**/*.exec";
 private String classesPattern = "**/classes";
 private String sourcesPattern = "**/src/main/java";
 private String inclusionPattern = "";
 private String exclusionPattern = "**/*Test*.class";
 private String sourceInclusionPattern = "**/*.java,**/*.groovy,**/*.kt,**/*.kts";

// 收集所有exec文件List<File>
public List<FilePath> collectExecFilesByPattern(String pattern){
   
	return Arrays.asList(workspace.list(pattern));
}

public void getJacocoResultData() {
   
	1. 设定一个收集文件用的根目录
	JacocoReportDir reportDir = new JacocoReportDir
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值