首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JaCoCo报告0%代码覆盖率

JaCoCo报告0%代码覆盖率
EN

Stack Overflow用户
提问于 2018-01-23 23:28:52
回答 2查看 3K关注 0票数 2

我正在尝试用jacoco设置测试覆盖率,但到目前为止还没有成功。

在我的build.gradle中,我添加了:

代码语言:javascript
复制
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测试报告:

代码语言:javascript
复制
./gradlew clean create<MyFlavor>DebugCoverageReport jacocoTestReport

我看到单元测试已成功运行,但当我打开位于以下位置的测试报告时:

代码语言:javascript
复制
<project>/build/reports/jacoco/jacocoTestReport/html/index.html

报告似乎是空的,因为覆盖率报告为N/A,甚至没有显示项目包。

此外,如果我尝试打开coverage文件

代码语言:javascript
复制
<project>/build/jacoco/test<MyFlavor>DebugUnitTest.exec

使用Android Studio,所有类都报告0.0%的覆盖率。

我使用的是gradle 3.0.1

我做错了什么?这和口味的使用有关系吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-24 02:52:25

我们设法找到了解决这个问题的办法。

似乎,当我们使用gradle口味时,我们必须在classDirectories系列中添加口味。

以下是我们当前的任务,并进行了更改:

代码语言:javascript
复制
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'])
}
票数 0
EN

Stack Overflow用户

发布于 2018-01-23 23:54:34

我也在为UnitTests和JaCoCo而苦苦挣扎。我通过使用不同的plugin解决了问题。

在根build.gradle中添加:

代码语言:javascript
复制
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.vanniktech:gradle-android-junit-jacoco-plugin:0.10.0'
    }
}

并在模块build.gradle中应用该插件

代码语言:javascript
复制
apply plugin: 'com.vanniktech.android.junit.jacoco'

在同步之后,您应该有新的gradle任务:

代码语言:javascript
复制
jacocoTestReport<<BuildVariant>>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48405310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档