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

相关文章

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

springboot集成Deepseek4j的项目实践

《springboot集成Deepseek4j的项目实践》本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录Deepseek4j快速开始Maven 依js赖基础配置基础使用示例1. 流式返回示例2. 进阶

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Android自定义Scrollbar的两种实现方式

《Android自定义Scrollbar的两种实现方式》本文介绍两种实现自定义滚动条的方法,分别通过ItemDecoration方案和独立View方案实现滚动条定制化,文章通过代码示例讲解的非常详细,... 目录方案一:ItemDecoration实现(推荐用于RecyclerView)实现原理完整代码实现

Spring Boot 集成 Quartz 使用Cron 表达式实现定时任务

《SpringBoot集成Quartz使用Cron表达式实现定时任务》本文介绍了如何在SpringBoot项目中集成Quartz并使用Cron表达式进行任务调度,通过添加Quartz依赖、创... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启