Jacoco在Gradle多项目中的应用
我在一些Gradle实现中使用了Jacoco,并决定改进它在多项目中的使用 我创建了一个类似于Jacoco在Gradle多项目中的应用,gradle,jacoco,Gradle,Jacoco,我在一些Gradle实现中使用了Jacoco,并决定改进它在多项目中的使用 我创建了一个类似于 parent-project - model-project - service-project 在我的build.gradle父项目中,我定义了: allprojects { apply plugin: 'jacoco' //apply other plugins repositories {...} test.finalizedBy(project.tasks.jac
parent-project
- model-project
- service-project
在我的build.gradle父项目中,我定义了:
allprojects {
apply plugin: 'jacoco'
//apply other plugins
repositories {...}
test.finalizedBy(project.tasks.jacocoTestReport)
jacocoTestReport {
reports {
csv.enabled false
html{
enabled true
destination "${buildDir}/reports/jacoco"
}
xml.enabled false
}
additionalSourceDirs = files(sourceSets.main.allJava.srcDirs)
}
//other configurations
buildscript {
repositories {
jcenter()
mavenCentral()
mavenLocal()
}
dependencies {
classpath 'org.ajoberstar:gradle-jacoco:0.2.0'
}
}
}
当我一直执行此代码时,我收到:
jacocoTestReport SKIPPED
所以我找到了我意识到的地方
如果某些子项目根本没有任何测试,jacocoRootReport将不起作用,因为这会导致jacoReport的onlyIf为false
我尝试在最后插入以下代码,但仍然不起作用
task jacocoRootReport(type: org.gradle.testing.jacoco.tasks.JacocoReport) {
dependsOn = subprojects.test
additionalSourceDirs = files(subprojects.sourceSets.main.allSource.srcDirs)
sourceDirectories = files(subprojects.sourceSets.main.allSource.srcDirs)
classDirectories = files(subprojects.sourceSets.main.output)
executionData = files(subprojects.jacocoTestReport.executionData)
reports {
html.enabled = true
xml.enabled = true
csv.enabled = false
}
onlyIf = {
true
}
doFirst {
executionData = files(executionData.findAll {
it.exists()
})
}
}
我还尝试在服务项目中创建一个测试。。。仍然不起作用,跳过的消息仍然存在
如何解决此问题?配置不正确。就我使用TestNG而不是JUnit而言,我需要在build.gradle中指定它 因此,我的父配置更改为:
subprojects {
apply plugin: 'jacoco'
//apply other plugins
def coverageSourceDirs = [
'src/main/java'
]
repositories {...}
jacoco {
toolVersion = '0.7.5+'
}
jacocoTestReport {
additionalSourceDirs = files(sourceSets.main.allSource.srcDirs)
classDirectories = files(sourceSets.main.output)
sourceDirectories = files(sourceSets.main.allSource.srcDirs)
reports {
csv.enabled false
html{
enabled true
destination "${buildDir}/reports/jacoco"
}
xml.enabled false
}
}
test {
useTestNG()
}
test.finalizedBy(project.tasks.jacocoTestReport)
dependencies {
testCompile "org.testng:testng:$testNGVersion"
testCompile "org.hamcrest:hamcrest-all:$hamcrestVersion"
testCompile "org.springframework:spring-test:$springVersion"
}
task jacocoRootReport(type: org.gradle.testing.jacoco.tasks.JacocoReport) {
additionalSourceDirs = files(subprojects.sourceSets.main.allSource.srcDirs)
classDirectories = files(subprojects.sourceSets.main.output)
dependsOn = subprojects.test
executionData = files(subprojects.jacocoTestReport.executionData)
sourceDirectories = files(subprojects.sourceSets.main.allSource.srcDirs)
reports {
csv.enabled false
html{
enabled true
destination "${buildDir}/reports/jacoco"
}
xml.enabled false
}
onlyIf = {
true
}
doFirst {
executionData = files(executionData.findAll {
it.exists()
})
}
}
}