k3b*_*k3b 5 java code-coverage gradle jacoco
有没有人知道如何为包含多个gradle子模块的codecoverage的java jacoco报告配置gradle文件?
我当前的方法只显示当前子模块的代码覆盖,但不显示兄弟 - 子模块的代码覆盖.
我有这个项目结构
- 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
Run Code Online (Sandbox Code Playgroud)
当我执行gradlew :extlib:check :extlib:jacocoTestReportjunit-test 时,执行"Integrationtest.java"并生成一个codecoverage报告,该报告不包含像Core.java这样的issib类的codecoverage
结果应该包括Ext.java和Core.java的代码库
我已经读过了
但没有发现任何线索
这是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()
}
}
Run Code Online (Sandbox Code Playgroud)
// build.gradle (2) subproject build file for corelib.
apply plugin: 'java'
apply plugin: 'jacoco'
dependencies {
}
jacocoTestReport {
reports {
xml.enabled true
html.enabled true
}
}
Run Code Online (Sandbox Code Playgroud)
// 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
Run Code Online (Sandbox Code Playgroud)
[更新2016-08-01]
感谢@Benjamin Muschko,我也尝试了根gradle文件
// 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)
}
}
Run Code Online (Sandbox Code Playgroud)
但收到错误信息(使用gradle-2.14)
* 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'.
Run Code Online (Sandbox Code Playgroud)
还有gradle插件https://github.com/paveldudka/JacocoEverywhere我要求mulit-submodule支持https://github.com/paveldudka/JacocoEverywhere/issues/16
[更新2016-08-01]我找到了一个基于https://github.com/palantir/gradle-jacoco-coverage的工作解决方案
请看下面我自己的答案
最后我找到了这个插件:https://github.com/palantir/gradle-jacoco-coverage为我完成了这项工作:
root gradle.build
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'
Run Code Online (Sandbox Code Playgroud)
所有子项目都有
apply plugin: 'jacoco'
Run Code Online (Sandbox Code Playgroud)
包含在报告中.
这对我有用
plugins {
id 'org.kordamp.gradle.jacoco' version '0.43.0'
}
config {
coverage {
jacoco {
enabled
aggregateExecFile
aggregateReportHtmlFile
aggregateReportXmlFile
additionalSourceDirs
additionalClassDirs
}
}
}
Run Code Online (Sandbox Code Playgroud)
https://kordamp.org/kordamp-gradle-plugins/#_org_kordamp_gradle_jacoco
| 归档时间: |
|
| 查看次数: |
8676 次 |
| 最近记录: |