Android开发环境和Jenkins CI集成Jacoco

2024-03-02 09:38

本文主要是介绍Android开发环境和Jenkins CI集成Jacoco,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Android开发环境集成
  1. 集成Jacoco Plugin
    在Project的build.gradle中添加:
 dependencies {xxx//新增classpath "org.jacoco:org.jacoco.core:0.8.2"}

在App模块的build.gradle apply plugin

    project.plugins.apply('jacoco')

在apply完plugin后,通过执行.gradlew clean testDebugUnitTest就会在build目录生成jacoco/testDebugUnitTest.exec,涵盖了测试coverage的信息。通过第2步,创建jacocoTestReport task会根据该文件和一些configuration生成Html报告。
2. 创建jacocoTestReportTask和配置jacoco(在高版本的jacoco和apply了java plugin的project自动创建该Task)

project.jacoco.toolVersion '0.8.2'
project.android.buildTypes {//toggle for report onlydebug {testCoverageEnabled true}release {testCoverageEnabled false}
}//如果集成Jenkins Pipeline,只需在Jenkins上安装Jacoco plugin,并且使用下面的Test Stage即可,无需执行jacocoTestReport task
//stage('Test') {
//    steps {
//        sh './gradlew -p ${project} testDebugUnitTest'
//        jacoco(
//                execPattern: "${project}/build/jacoco/testDebugUnitTest.exec",
//                classPattern: "${project}/build/intermediates/javac/Debug, ${project}/build/tmp/kotlin-classes/Debug",
//                sourcePattern: "${project}/src/main/java, ${project}/src/main/kotlin",
//                exclusionPattern: '**/R.class,**/R$*.class,**/*$ViewInjector*.*,**/*$Companion.*,**/*$ViewBinder*.*,**/BuildConfig.*,**/Manifest*.*,**/*$Lambda$*.*,**/*Module.*,**/*Dagger*.*,**/*MembersInjector*.*,**/*_Provide*Factory*.*,**/*_Factory*.*,**/*$*$*.*'
//        )
//    }
//}
project.tasks.create(name: 'jacocoTestReport',type: JacocoReport,dependsOn: "testDebugUnitTest"
) {group = "Reporting"description = "Generate Jacoco coverage reports for the ${project.name}."def buildDir = project.buildDirdef coverageSourceDirs = ["src/main/java","src/main/kotlin"]def fileFilter = ['**/R.class','**/R$*.class','**/*$ViewInjector*.*','**/*$ViewBinder*.*','**/*$Companion.*','**/BuildConfig.*','**/Manifest*.*','**/*$Lambda$*.*','**/*Module.*','**/*Dagger*.*','**/*MembersInjector*.*','**/*_Provide*Factory*.*','**/*_Factory*.*','**/*$*$*.*']def javaClasses = fileTree(dir: "$buildDir/intermediates/javac/debug",excludes: fileFilter)def kotlinClasses = fileTree(dir: "$buildDir/tmp/kotlin-classes/debug",excludes: fileFilter)classDirectories.from(files([javaClasses], [kotlinClasses]))additionalSourceDirs.from(files(coverageSourceDirs))sourceDirectories.from(files(coverageSourceDirs))executionData.from(files("${project.buildDir}/jacoco/testDebugUnitTest.exec"))reports {xml.enabled = truehtml.enabled = true}
}

目前为止,通过执行./gradlew jacocoTestReport就能生成想要的测试报告:
在这里插入图片描述

Android Jenkins CI
  1. Jenkins集成时,针对我们的repo源码,可以不用create jacocoTestReport这个Task,但是需要在Jenkins上安装Jacoco Plugin:
    在这里插入图片描述
    在这里插入图片描述
    然后搜索JaCoCo Plugin,安装并重启Jenkins,
    在Test Stage中添加如下配置:
stage('Test') {steps {sh './gradlew -p ${project} testDebugUnitTest'jacoco(execPattern: "${project}/build/jacoco/testDebugUnitTest.exec",classPattern: "${project}/build/intermediates/javac/Debug, ${project}/build/tmp/kotlin-classes/Debug",sourcePattern: "${project}/src/main/java, ${project}/src/main/kotlin",exclusionPattern: '**/R.class,**/R$*.class,**/*$ViewInjector*.*,**/*$Companion.*,**/*$ViewBinder*.*,**/BuildConfig.*,**/Manifest*.*,**/*$Lambda$*.*,**/*Module.*,**/*Dagger*.*,**/*MembersInjector*.*,**/*_Provide*Factory*.*,**/*_Factory*.*,**/*$*$*.*')}
}

最后的结果报告:
在这里插入图片描述

Sample

https://github.com/Visualrainy/AndroidJacoco

这篇关于Android开发环境和Jenkins CI集成Jacoco的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/765690

相关文章

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

Jenkins分布式集群配置方式

《Jenkins分布式集群配置方式》:本文主要介绍Jenkins分布式集群配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装jenkins2.配置集群总结Jenkins是一个开源项目,它提供了一个容易使用的持续集成系统,并且提供了大量的plugin满

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅