I am trying to apply Jacoco to a cucumber task, and I think the JacocoTaskExtension contains the capabilities Im missing, but I dont know how to add it to my task. I have a JacocoPluginExtension, but that appears to be a different thing.
plugins {
id 'java'
id 'jacoco'
id "org.sonarqube" version "2.8"
}
sourceSets {
itest {
compileClasspath += main.output
runtimeClasspath += main.output
}
}
configurations {
cucumberRuntime.extendsFrom testImplementation
itestImplementation.extendsFrom testImplementation
itestRuntime.extendsFrom testRuntime
}
task cucumber() {
dependsOn assemble, compileItestJava, test
jacoco { }
doLast {
javaexec {
main = "io.cucumber.core.cli.Main"
jvmArgs = ['-javaagent:src/itest/resources/jacocoagent.jar=destfile=build/jacoco/cucumber.exec,append=true,inclnolocationclasses=false,dumponexit=true,output=file,jmx=false']
classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.itest.output
args = ['--plugin', 'pretty', '--glue', 'cuke', 'src/itest/resources']
}
}
}
jacocoTestReport {
executionData fileTree(project.rootDir.absolutePath).include("build/jacoco/*.exec")
dependsOn test,cucumber
reports {
xml.enabled true
csv.enabled false
}
}
This is the build.gradle. I have a workaround for the jacoco agent, as you see, but I think using the JacocoTaskExtension would allow me to get it properly applied to the javaExec clause.
The “jacoco {}” adds the JacocoPluginExtension; perhaps a different name would also get me the JacocoTaskExtension?
This isnt urgent, because the workaround you see is getting me the jacoco data I need, for now, but it will be brittle as the version of jacoco used by the jacoco plugins changes.