JaCoCo报告0%的代码覆盖率

时间:2018-01-23 15:28:52

标签: android junit jacoco

我正在尝试使用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

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

2 个答案:

答案 0 :(得分:1)

我也在与UnitTests和JaCoCo斗争。我通过使用不同的plugin解决了我的问题。

在您的根<form role="form" name="form"> <div class="form-group"> <select cam-variable-name="altneu" cam-variable-type="String"> <option value="ALT">Alt</option> <option value="NEU">Neu</option> </select> </div> </form> 添加:

<form role="form" name="form">
    <div class="form-group">
        <label for="neukundeId">Neukunde?</label>
        <input type="checkbox" cam-variable-name="isNeu" cam-variable-type="Boolean" id="neukundeId" />
    </div>
</form>

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

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.vanniktech:gradle-android-junit-jacoco-plugin:0.10.0'
    }
}

同步后你应该有新的gradle任务:

build.gradle

答案 1 :(得分:0)

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

看来,由于我们使用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'])
}