我正在尝试用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,甚至没有显示项目包。
此外,如果我尝试打开coverage文件
<project>/build/jacoco/test<MyFlavor>DebugUnitTest.exec使用Android Studio,所有类都报告0.0%的覆盖率。
我使用的是gradle 3.0.1
我做错了什么?这和口味的使用有关系吗?
发布于 2018-01-24 02:52:25
我们设法找到了解决这个问题的办法。
似乎,当我们使用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'])
}发布于 2018-01-23 23:54:34
我也在为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>>https://stackoverflow.com/questions/48405310
复制相似问题