Java Gradle Jacoco插件:从另一个模块中的类生成覆盖率
我正在处理一个包含两个模块的库项目:主模块包含逻辑,我有一个测试模块,其中包含两个与主模块类相关的测试UTIL,以及来自主模块的测试。我需要将测试移动到测试模块以避免循环依赖。嗯 现在,在运行测试(包含在测试模块中)之后,我需要生成核心模块的覆盖率。我的Java Gradle Jacoco插件:从另一个模块中的类生成覆盖率,java,android,gradle,jacoco,Java,Android,Gradle,Jacoco,我正在处理一个包含两个模块的库项目:主模块包含逻辑,我有一个测试模块,其中包含两个与主模块类相关的测试UTIL,以及来自主模块的测试。我需要将测试移动到测试模块以避免循环依赖。嗯 现在,在运行测试(包含在测试模块中)之后,我需要生成核心模块的覆盖率。我的jacoco配置如下: task jacocoTestReport(type: JacocoReport, dependsOn: 'testDebugUnitTest') { reports { xml.enabled
jacoco
配置如下:
task jacocoTestReport(type: JacocoReport, dependsOn: 'testDebugUnitTest') {
reports {
xml.enabled = true
html.enabled = true
}
jacocoClasspath = configurations['androidJacocoAnt']
def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*']
def debugTree = fileTree(dir: "${rootProject.projectDir}/test-module/build/intermediates/classes/debug", excludes: fileFilter)
def debugMainTree = fileTree(dir: "${rootProject.projectDir}/main-module/build/intermediates/classes/debug", excludes: fileFilter)
def mainSrc = "${rootProject.projectDir}/test-module/src/main/java"
def mainMainSrc = "${rootProject.projectDir}/main-module/src/main/java"
sourceDirectories = files([mainSrc])
additionalSourceDirs = files([mainMainSrc])
classDirectories = files([debugTree])
additionalClassDirs = files([debugMainTree])
executionData = files "${buildDir}/jacoco/testDebugUnitTest.exec"
}
报告中显示了所有类,但覆盖率为0%。我收到一些关于输出的警告,比如:
[ant:jacocoReport] Classes in bundle 'test-module' do no match with execution data. For report generation the same class files must be used as at runtime.
[ant:jacocoReport] Execution data for class my/class/from/MainModule does not match.
我查看了intermediates
文件夹,试图找出测试从何处获取主类文件,但没有成功
顺便说一句,这是一个Android库项目(有两个内部发布的工件)。我正在使用Gradle 2.8。您解决了这个问题吗?我在一个多模块梯度项目中遇到了一个类似的问题。