JaCoCo 报告 0% 的代码覆盖率
JaCoCo reporting 0% code coverage
我正在尝试使用 jacoco 设置测试覆盖率,但到目前为止我一直没有成功。
在我的 build.gradle 我添加了:
apply plugin: 'jacoco'
(...)
buildTypes {
debug {
testCoverageEnabled true
}
(...)
task jacocoTestReport(type: JacocoReport, dependsOn: "test<MyFlavor>DebugUnitTest") {
group = "Reporting"
description = "Generate Jacoco coverage reports"
reports {
xml.enabled = true
html.enabled = true
}
def fileFilter = []
def debugTree = fileTree(dir: "${buildDir}/intermediates/classes/debug", excludes: fileFilter)
def mainSrc = "${project.projectDir}/src/main/java"
sourceDirectories = files([mainSrc])
classDirectories = files([debugTree])
executionData = fileTree(dir: project.projectDir, includes:
['**/*.exec' , '**/*.ec'])
}
然后我运行JaCoCo测试报告代码如下:
./gradlew clean create<MyFlavor>DebugCoverageReport jacocoTestReport
我看到单元测试运行成功,但是当我打开测试报告时,位于:
<project>/build/reports/jacoco/jacocoTestReport/html/index.html
报告似乎是空的,因为覆盖率报告为 N/A,甚至没有显示项目包。
此外,如果我尝试在
打开覆盖文件
<project>/build/jacoco/test<MyFlavor>DebugUnitTest.exec
使用 Android Studio,所有 类 报告的覆盖率为 0.0%。
我正在使用 gradle 3.0.1
我做错了什么?
这跟口味的使用有关系吗?
我也在为 UnitTests 和 JaCoCo 苦苦挣扎。我通过使用不同的 plugin.
解决了我的问题
在你的根 build.gradle
添加:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.vanniktech:gradle-android-junit-jacoco-plugin:0.10.0'
}
}
并在您的模块中应用插件 build.gradle
:
apply plugin: 'com.vanniktech.android.junit.jacoco'
同步后您应该有新的 gradle 任务:
jacocoTestReport<<BuildVariant>>
我们设法找到了这个问题的解决方案。
似乎,当我们使用 gradle 风味时,我们必须在 classDirectories
行中添加风味。
这是我们当前的任务,并进行了更改:
task jacocoTestReport(type: JacocoReport, dependsOn: "test<MyFlavor>DebugUnitTest") {
group = "Reporting"
description = "Generate Jacoco coverage reports"
reports {
xml.enabled = true
html.enabled = true
}
def fileFilter = []
def debugTree = fileTree(dir: "${buildDir}/intermediates/classes/<MyFlavor>/", excludes: fileFilter)
def mainSrc = "${project.projectDir}/src/main/java"
sourceDirectories = files([mainSrc])
classDirectories = files([debugTree])
executionData = fileTree(dir: project.projectDir, includes:
['**/*.exec' , '**/*.ec'])
}
我正在尝试使用 jacoco 设置测试覆盖率,但到目前为止我一直没有成功。
在我的 build.gradle 我添加了:
apply plugin: 'jacoco'
(...)
buildTypes {
debug {
testCoverageEnabled true
}
(...)
task jacocoTestReport(type: JacocoReport, dependsOn: "test<MyFlavor>DebugUnitTest") {
group = "Reporting"
description = "Generate Jacoco coverage reports"
reports {
xml.enabled = true
html.enabled = true
}
def fileFilter = []
def debugTree = fileTree(dir: "${buildDir}/intermediates/classes/debug", excludes: fileFilter)
def mainSrc = "${project.projectDir}/src/main/java"
sourceDirectories = files([mainSrc])
classDirectories = files([debugTree])
executionData = fileTree(dir: project.projectDir, includes:
['**/*.exec' , '**/*.ec'])
}
然后我运行JaCoCo测试报告代码如下:
./gradlew clean create<MyFlavor>DebugCoverageReport jacocoTestReport
我看到单元测试运行成功,但是当我打开测试报告时,位于:
<project>/build/reports/jacoco/jacocoTestReport/html/index.html
报告似乎是空的,因为覆盖率报告为 N/A,甚至没有显示项目包。
此外,如果我尝试在
打开覆盖文件<project>/build/jacoco/test<MyFlavor>DebugUnitTest.exec
使用 Android Studio,所有 类 报告的覆盖率为 0.0%。
我正在使用 gradle 3.0.1
我做错了什么? 这跟口味的使用有关系吗?
我也在为 UnitTests 和 JaCoCo 苦苦挣扎。我通过使用不同的 plugin.
解决了我的问题在你的根 build.gradle
添加:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.vanniktech:gradle-android-junit-jacoco-plugin:0.10.0'
}
}
并在您的模块中应用插件 build.gradle
:
apply plugin: 'com.vanniktech.android.junit.jacoco'
同步后您应该有新的 gradle 任务:
jacocoTestReport<<BuildVariant>>
我们设法找到了这个问题的解决方案。
似乎,当我们使用 gradle 风味时,我们必须在 classDirectories
行中添加风味。
这是我们当前的任务,并进行了更改:
task jacocoTestReport(type: JacocoReport, dependsOn: "test<MyFlavor>DebugUnitTest") {
group = "Reporting"
description = "Generate Jacoco coverage reports"
reports {
xml.enabled = true
html.enabled = true
}
def fileFilter = []
def debugTree = fileTree(dir: "${buildDir}/intermediates/classes/<MyFlavor>/", excludes: fileFilter)
def mainSrc = "${project.projectDir}/src/main/java"
sourceDirectories = files([mainSrc])
classDirectories = files([debugTree])
executionData = fileTree(dir: project.projectDir, includes:
['**/*.exec' , '**/*.ec'])
}