Gradle Android JUnit Jacoco 插件使用教程
项目的目录结构及介绍
gradle-android-junit-jacoco-plugin/
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── LICENSE
├── README.md
├── settings.gradle
└── src
├── main
│ └── groovy
│ └── com
│ └── vanniktech
│ └── gradle
│ └── android
│ └── junit
│ └── jacoco
│ └── AndroidJUnitJacocoPlugin.groovy
└── test
└── groovy
└── com
└── vanniktech
└── gradle
└── android
└── junit
└── jacoco
└── AndroidJUnitJacocoPluginTest.groovy
目录结构说明
build.gradle
: 项目的构建脚本。gradle/wrapper/
: 包含 Gradle Wrapper 的文件,用于确保项目使用特定版本的 Gradle。gradle.properties
: 包含 Gradle 构建的属性配置。gradlew
和gradlew.bat
: Gradle Wrapper 的脚本,用于在不同平台上执行 Gradle 任务。LICENSE
: 项目的开源许可证。README.md
: 项目的说明文档。settings.gradle
: 项目的设置脚本,用于包含子项目。src/main/groovy/...
: 包含插件的主要实现代码。src/test/groovy/...
: 包含插件的测试代码。
项目的启动文件介绍
项目的启动文件是 src/main/groovy/com/vanniktech/gradle/android/junit/jacoco/AndroidJUnitJacocoPlugin.groovy
。这个文件定义了插件的主要逻辑和行为。
AndroidJUnitJacocoPlugin.groovy 文件说明
package com.vanniktech.gradle.android.junit.jacoco
import org.gradle.api.Plugin
import org.gradle.api.Project
class AndroidJUnitJacocoPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
project.pluginManager.apply 'com.android.library'
project.pluginManager.apply 'jacoco'
project.android.testOptions.unitTests.all {
it.jacoco.includeNoLocationClasses = true
}
project.tasks.create('jacocoTestReport', JacocoReport) {
dependsOn 'testDebugUnitTest'
sourceDirectories = project.files(["${project.projectDir}/src/main/java"])
classDirectories = project.fileTree(dir: "${project.buildDir}/intermediates/classes/debug", excludes: [
'**/R.class',
'**/R$*.class',
'**/BuildConfig.*',
'**/Manifest*.*'
])
executionData = project.fileTree(dir: project.buildDir, includes: [
'jacoco/testDebugUnitTest.exec',
'outputs/code-coverage/connected/*coverage.ec'
])
}
}
}
文件说明
AndroidJUnitJacocoPlugin
类实现了Plugin<Project>
接口,并重写了apply
方法。- 在
apply
方法中,插件首先应用了com.android.library
和jacoco
插件。 - 配置了 Android 测试选项,确保 Jacoco 包含无位置类。
- 创建了一个名为
jacocoTestReport
的任务,用于生成测试报告。
项目的配置文件介绍
build.gradle 文件
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.0'
classpath 'org.jacoco:org.jacoco.core:0.8.5'
}
}
apply plugin: 'groovy'
apply plugin: 'maven-publish'
apply plugin: 'com.vanniktech.gradle.android.junit.jacoco'
dependencies {
implementation gradleApi()