JaCoCo 插件目前还是孵化中状态。请务必注意,在以后的 Gradle 版本中,DSL 和其他配置可能会有所改变。
JaCoCo 插件通过集成 JaCoCo为 Java 代码提供了代码覆盖率指标。
要想开始,请将 JaCoCo 插件应用于你想要计算代码覆盖率的项目中。
应用 JaCoCo 插件
build.gradle
apply plugin: "jacoco"
如果 Java 插件也被应用于你的项目,那么会创建一个名为 jacocoTestReport 的新任务,该新任务依赖于 test 任务。该报告可以在 $buildDir/reports/jacoco/test 中看到。默认情况下,会生成一个 HTML 报告。
JaCoCo 插件添加一个名为 jacoco 类型为 JacocoPluginExtension 的 project 扩展,这个扩展允许在你的构建中配置 JaCoCo 所使用的默认值。
配置 JaCoCo 插件设置
build.gradle
jacoco
toolVersion = "0.6.2.201302030002"
reportsDir = file("$buildDir/customJacocoReportDir")
}
表 34.1. JaCoCo 属性的 Gradle 默认值
Property | Gradle 默认值 |
reportsDir | "$buildDir/reports/jacoco" |
JacocoReport 任务可以用于生成不同格式的代码覆盖率报告。它实现了标准的 Gradle 类型 Reporting,并呈现了一个 JacocoReportsContainer 类型的报告容器。
配置测试任务
build.gradle
jacocoTestReport {
reports
xml.enabled false
csv.enabled false
html.destination "${buildDir}/jacocoHtml"
}
}
JaCoCo 插件添加了一个 JacocoTaskExtension 扩展到 Test 类型的所有任务中。该扩展允许配置 JaCoCo 中的测试任务的一些特定属性。
配置测试任务
build.gradle
test {
jacoco
append = false
destinationFile = file("$buildDir/jacoco/jacocoTest.exec")
classDumpFile = file("$buildDir/jacoco/classpathdumps")
}
}
表 34.2. JaCoCo 任务扩展的默认值
Property | Gradle 默认值 |
enabled | true |
destPath | $buildDir/jacoco |
append | true |
includes | [] |
excludes | [] |
excludeClassLoaders | [] |
sessionId |
auto-generated
|
dumpOnExit |
true
|
output |
Output.FILE
|
address |
-
|
port |
-
|
classDumpPath |
-
|
jmx |
false
|
虽然 Test 的所有任务会在 java 插件被配置使用时会自动增强以提供覆盖率信息,但是任何实现了 JavaForkOptions 的任务都可以通过 JaCoCo 插件得到增强。也就意味着,任何 fork Java 进程的任务都可以用于生成覆盖率信息。
例如,你可以配置您的构建使用 application 插件来生成代码覆盖率。
使用 application 插件来生成代码覆盖率数据
build.gradle
apply plugin: "application"
apply plugin: "jacoco"
mainClassName = "org.gradle.MyMain"
jacoco {
applyTo run
}
task applicationCodeCoverageReport(type:JacocoReport){
executionData run
sourceSets sourceSets.main
}
注: 此示例中的代码可以在 Gradle 的二进制分发包及源代码分发包中的 samples/testing/jacoco/application 中找到。
由 applicationCodeCoverageReport 生成的覆盖率报告
构建布局
application
build
jacoco
run.exec
reports/jacoco/applicationCodeCoverageReport/html/
index.html
对于同时也配置使用了 Java 插件的项目,JaCoCo 插件会自动添加以下任务:
表 34.3. JaCoCo 插件 - 任务
任务名称 | 依赖于 | 类型 | 描述 |
jacocoTestReport
|
- | JacocoReport | 为测试任务生成代码覆盖率报告。 |
JaCoCo 插件添加了下列的依赖配置:
表 34.4. JaCoCo 插件 - 依赖配置
名称 | 意义 |
jacocoAnt
|
用于运行JacocoMerge 任务的 JaCoCo Ant 库。 |
jacocoAgent
|
用于测试位于test下的代码的 JaCoCo 客户端库。 |
你可以用 Ant 来执行 Java 代码。在下面的例子中,给出的 java 类文件需要一个参数(管理员的邮箱地址),执行后将发送一封邮件...
Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开...
常用设置如上图标注 1 所示,该区域的后缀类型文件在 IntelliJ IDEA 中将以标注 2 的方式进行打开。如上图标注 3 所示,我们可以...
打开新建 Java 接口向导新建 Java 接口向导可以创建新的 Java 接口。打开向导的方式有:点击 File 菜单并选择 NewInterface在 Pa...
Redis Setex 命令Redis 字符串(string) Redis Setex 命令为指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会...
Redis Decrby 命令Redis 字符串(string) Redis Decrby 命令将 key 所储存的值减去指定的减量值。如果 key 不存在,那么 key 的值...
Redis Hincrby 命令Redis 哈希(Hash) Redis Hincrby 命令用于为哈希表中的字段值加上指定增量值。增量也可以为负数,相当于对指...
视图constraint_column_usage标识在当前数据库中被某个约束使用的所有列。只有包含在被一个当前启用的角色拥有的表中的那些列才...