程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Gradle jacoco覆盖报告包含多个子模块?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Gradle jacoco覆盖报告包含多个子模块??

开发过程中遇到Gradle jacoco覆盖报告包含多个子模块?的问题如何解决?下面主要结合日常开发的经验,给出你关于Gradle jacoco覆盖报告包含多个子模块?的解决方法建议,希望对你解决Gradle jacoco覆盖报告包含多个子模块?有所启发或帮助;

最后,我找到了这个插件:@R_801_10107@s ://github.com/palantir/gradle-jacoco- coverage为我完成了这项工作:

根gradle.build

@H_616_7@buildscript {
    repositorIEs {
        jcenter()
    }
    dependencIEs {
        // see @R_801_10107@s://jcenter.bintray.com/com/androID/tools/build/gradle/
        classpath 'com.androID.tools.build:gradle:2.1.0'
        // classpath 'com.androID.tools.build:gradle:2.2.0-Alpha1'

        // @R_801_10107@s://github.com/palantir/gradle-jacoco-coverage
        classpath 'com.palantir:jacoco-coverage:0.4.0'      
    }
}

// @R_801_10107@s://github.com/palantir/gradle-jacoco-coverage
apply plugin: 'com.palantir.jacoco-full-report'

所有具有

@H_616_7@apply plugin: 'jacoco'

包含在报告中。

解决方法

有谁知道如何为Java Jacoco报告配置一个gradle文件,其中包含多个gradle子模块的代码覆盖率?

我当前的方法仅显示当前子模块的代码覆盖率,而不显示兄弟子模块的代码覆盖率。

我有这个项目结构

@H_616_7@- build.gradle (1)
- corelib/
    - build.gradle (2)
    - src/main/java/package/Core.java
- extlib/
    - build.gradle (3)
    - src/main/java/package/Ext.java
    - src/test/java/package/Integrationtest.java

当我执行@H_616_7@gradlew :extlib:check :extlib:jacocoTestReportjunit-test“
Integrationtest.java”并执行代码生成报告时,该报告不包含Corelib类(如Core.java)的代码覆盖

结果应包括Ext.java和Core.java的代码覆盖率

我已经看过

  • @R_801_10107@s://docs.gradle.org/current/userguide/jacoco_plugin.html

但没有发现任何线索

这是gradle文件的内容

@H_616_7@// root build.gradle (1)
// Top-level build file where you can add configuration options 
// common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
    }
}
allprojects {
    repositories {
        jcenter()
    }
}

@H_616_7@// build.gradle (2) subproject build file for corelib.
apply plugin: 'java'
apply plugin: 'jacoco'

dependencies {
}

jacocoTestReport {
    reports {
        xml.enabled true
        html.enabled true
    }
}

@H_616_7@// build.gradle (3) subproject build file for extlib.
apply plugin: 'java'
apply plugin: 'jacoco'

dependencies {
    compile project(':corelib')
    TESTCompile 'junit:junit:4.11'

    // this does not compile
    // jacocoTestReport project(':pixymeta-core-lib')
}

jacocoTestReport {
    reports {
        xml.enabled true
        html.enabled true
    }
}

// workaround because android-studio does not make the test resources available
// see @R_801_10107@s://code.google.com/p/android/issues/detail?id=64887#c13
task copyTestresources(type: Copy) {
    from sourceSets.test.resources
    into sourceSets.test.output.classesDir
}
processTestresources.dependsOn copyTestresources

[更新2016-08-01]

感谢@Benjamin Muschko我也尝试了根gradle文件

@H_616_7@// @R_801_10107@s://discuss.gradle.org/t/merge-jacoco-coverage-reports-for-multiproject-setups/12100/6
// @R_801_10107@s://docs.gradle.org/current/dsl/org.gradle.tesTing.jacoco.tasks.JacocoMerge.html
task jacocoMerge(type: JacocoMergE) {
   subprojects.each { subproject ->
      executionData subproject.tasks.withType(Test)
   }

}

但收到错误消息(使用gradle-2.14)

@H_616_7@* what went wrong:
Some problems were found with the configuration of task ':jacocoMerge'.
> No value has been specified for property 'jacocoClasspath'.
> No value has been specified for property 'executionData'.
> No value has been specified for property 'desTinationFile'.

还有gradle插件@R_801_10107@s://github.com/paveldudka/JacocoEverywhere,我在这里要求多子模块支持@R_801_10107@s://github.com/paveldudka/JacocoEverywhere/issues/16

[更新2016-08-01]我找到了一个基于@R_801_10107@s://github.com/palantir/gradle-jacoco-
coverage的可行解决方案

见下面我自己的答案

大佬总结

以上是大佬教程为你收集整理的Gradle jacoco覆盖报告包含多个子模块?全部内容,希望文章能够帮你解决Gradle jacoco覆盖报告包含多个子模块?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。