I am unable to get coverage of REST calls from test case using jacoco plugin. Please have a look at this stackoverflow thread: Code coverage for REST calls using jacoco
I have also googled for a solution and wanted to try offline instrumentation using jacoco. But nothing found on how to do it using jacoco gradle plugin. Is it possible to do offline instrumentation using jacoco gradle plugin?. If yes, some examples would be great.
datallah
(Daniel Atallah)
October 14, 2016, 9:40pm
2
I had a need to do this too and was able to figure out how to hack the jacoco plugin to do offline instrumentation:
//Additional SourceSets can be added to the jacocoOfflineSourceSets as needed by
project.ext.jacocoOfflineSourceSets = [ 'main' ]
task doJacocoOfflineInstrumentation(dependsOn: [ classes, project.configurations.jacocoAnt ]) {
inputs.files classes.outputs.files
File outputDir = new File(project.buildDir, 'instrumentedClasses')
outputs.dir outputDir
doFirst {
project.delete(outputDir)
ant.taskdef(
resource: 'org/jacoco/ant/antlib.xml',
classpath: project.configurations.jacocoAnt.asPath,
uri: 'jacoco'
)
def instrumented = false
jacocoOfflineSourceSets.each { sourceSetName ->
if (file(sourceSets[sourceSetName].output.classesDir).exists()) {
def instrumentedClassedDir = "${outputDir}/${sourceSetName}"
ant.'jacoco:instrument'(destdir: instrumentedClassedDir) {
fileset(dir: sourceSets[sourceSetName].output.classesDir, includes: '**/*.class')
}
//Replace the classes dir in the test classpath with the instrumented one
sourceSets.test.runtimeClasspath -= files(sourceSets[sourceSetName].output.classesDir)
sourceSets.test.runtimeClasspath += files(instrumentedClassedDir)
instrumented = true
}
}
if (instrumented) {
//Disable class verification based on https://github.com/jayway/powermock/issues/375
test.jvmArgs += '-noverify'
}
}
}
test.dependsOn doJacocoOfflineInstrumentation
I am stuck at the same problem and tried applying your hack without much success.
Could you show me a more complete example?
Thanks
Could you please provide a full example with Gradle and Jacoco offline instrumentation?