当前位置: 首页 > 知识库问答 >
问题:

带有多个子模块的Gradle jacoco覆盖报告?

姜华翰
2023-03-14
- 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
  • https://docs.gradle.org/current/userguide/jacoco_plugin.html
  • 并使用Gradle过滤JaCoCo覆盖报告

但没有发现任何线索

以下是gradle文件的内容

// 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()
    }
}
// build.gradle (2) subproject build file for corelib.
apply plugin: 'java'
apply plugin: 'jacoco'

dependencies {
}

jacocoTestReport {
    reports {
        xml.enabled true
        html.enabled true
    }
}
// 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 https://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
// https://discuss.gradle.org/t/merge-jacoco-coverage-reports-for-multiproject-setups/12100/6
// https://docs.gradle.org/current/dsl/org.gradle.testing.jacoco.tasks.JacocoMerge.html
task jacocoMerge(type: JacocoMerge) {
   subprojects.each { subproject ->
      executionData subproject.tasks.withType(Test)
   } 

}
* 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'.

下面看我自己的答案

共有1个答案

欧阳骏俊
2023-03-14

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

根级。构建

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        // see https://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'

        // https://github.com/palantir/gradle-jacoco-coverage
        classpath 'com.palantir:jacoco-coverage:0.4.0'      
    }
}

// https://github.com/palantir/gradle-jacoco-coverage
apply plugin: 'com.palantir.jacoco-full-report'

所有具有

apply plugin: 'jacoco'
 类似资料:
  • 问题内容: 有谁知道如何为Java Jacoco报告配置一个gradle文件,其中包含多个gradle子模块的代码覆盖率? 我当前的方法仅显示当前子模块的代码覆盖率,而不显示兄弟子模块的代码覆盖率。 我有这个项目结构 当我执行junit-test“ Integrationtest.java”并执行代码生成报告时,该报告不包含Corelib类(如Core.java)的代码覆盖 结果应包括Ext.ja

  • 我有一个多模块项目,我似乎无法在Sonarqube上获得准确的单元测试代码覆盖率报告。我使用buildr和JaCoCo生成测试覆盖率。文件继承类似于下面。 项目--module1----reports----Jacoco------Jacoco.cov(jacoco执行文件,以前用作.exec)--module2--reports----Jacoco(生成的HTML、CSV和XML报表文件)---

  • 问题内容: 似乎有几个问题,这些问题已经很老了,并且从Java 8对Jacoco的支持开始发生了变化。 我的项目包含以下结构 我已经配置了这样的 主POM.xml Pom.xml B pom.xml 我正在执行此命令。我可以看到jacoco.exec正在生成,但是我看不到任何HTML报告正在验证数据。 请帮我解决一下这个。还有一点是,我的配置对项目是否正确? 更新资料 已确定的问题。 变成 现在,

  • 这些答案中没有一个能够产生我想要的结果:如果一个类在堆栈更高的测试中被使用,比如DAOs使用的实体,那么这个类就会被覆盖,即使它没有被它自己的模块中的测试完全覆盖。 是否有一个明确的配置某处,以实现这一点,请?

  • 我有一个基本的maven多模块,父模块是POM,其子模块是domain、service和Web。 我已经在pom父级中添加了jacoco插件和所需的配置,以便将测试覆盖率报告附加到一个Sonar很容易找到的文件中。 我的问题是,Sonar只显示第一个模块的测试覆盖范围(是domain)(即使我用编辑器打开文件,看到其他模块的类名被追加在其中)。 这种配置会有什么问题? 为了它的价值,声纳分析被称为

  • 似乎有几个问题,这些问题很老了,而且从Java 8对Jacoco的支持开始就发生了变化。 我的项目包含以下结构 我已经这样配置了 主要聚甲醛.xml 一个Pom.xml B pom.xml 我正在执行这个命令< code>mvn clean package。我可以看到jacoco.exec正在生成,但是我看不到任何验证数据的HTML报告。 请帮帮我。另一点是,我的配置对于项目是否正确? 更新 已识