# JaCoCo no subproject coverage

**URL:** https://discuss.gradle.org/t/jacoco-no-subproject-coverage/21451
**Category:** Help/Discuss
**Created:** [February 2, 2017, 8:33pm UTC](https://discuss.gradle.org/t/jacoco-no-subproject-coverage/21451 "2017-02-02T20:33:10Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![bensmith87](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/bensmith87/32/5915_2.png) [@bensmith87](https://discuss.gradle.org/u/bensmith87)
#### Post date: [February 2, 2017, 8:33pm UTC](https://discuss.gradle.org/t/jacoco-no-subproject-coverage/21451/1 "2017-02-02T20:33:10Z")

</div>

I’ve been using JaCoCo via the Gradle plugin and it’s been working well, but I’ve just moved some of my code base into subprojects and I’m no longer getting coverage.

The JaCoCo agent generates the exec file correctly.  
The report is also generated and sessions page has the classes from the sub project, but there is no coverage in the main coverage page.

I’ve written an SSCCE for the problem:

```
├── build.gradle
├── settings.gradle
├── src
│ └── cucumber
│ ├── java
│ │ └── a
│ │ └── Steps.java
│ └── resources
│ └── test.feature
└── sub
    └── src
        └── main
            └── java
                └── a
                    └── Sub.java

```

build.gradle

```
plugins {
    id 'java'
    id 'jacoco'
    id 'com.github.samueltbrown.cucumber' version '0.9'
}

repositories {
    mavenCentral()
}

cucumber {
    glueDirs = ['src/cucumber/java']
    featureDirs = ['src/cucumber/resources']

    jvmOptions {
        def jacocoAgent = zipTree(configurations.jacocoAgent.singleFile).filter { it.name == 'jacocoagent.jar' }.singleFile
        def jacocoResult = "$buildDir/results/jacoco/cucumber.exec"
        jvmArgs = ["-javaagent:$jacocoAgent=destfile=$jacocoResult,append=false"]
    }
}

jacocoTestReport {
    executionData = files("$buildDir/results/jacoco/cucumber.exec")

    reports {
        html.destination "$buildDir/reports/jacoco"
    }
}

dependencies {
    cucumberCompile 'info.cukes:cucumber-java:1.2.5'
    cucumberCompile project('sub')
}

subprojects {
    apply plugin: 'java'
}

```

I’ve tried playing with the properties of the jacocoTestReport task, but nothing seems to help.

I’m running on Arch linux with OpenJDK 8 and Gradle 3.3.

I find JaCoCo indispensable for creating quality software and would greatly appreciate any help.

---

<div class="post-metadata">

### Author: ![Lance](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/lance/32/787_2.png) [@Lance](https://discuss.gradle.org/u/Lance)
#### Post date: [February 4, 2017, 7:55pm UTC](https://discuss.gradle.org/t/jacoco-no-subproject-coverage/21451/2 "2017-02-04T19:55:30Z")

</div>

By default, jacoco will only report coverage on sources in the same project as the tests. You’ll need to add the other project’s sources to the report

```gradle
jacocoTestReport {
   additionalSourceDirs new File(rootProject.projectDir, 'sub/src/main/java') 
} 

```

See [JacocoReport.additionalSourceDirs](https://docs.gradle.org/current/javadoc/org/gradle/testing/jacoco/tasks/JacocoReport.html#additionalSourceDirs(java.io.File...))

---

<div class="post-metadata">

### Author: ![bensmith87](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/bensmith87/32/5915_2.png) [@bensmith87](https://discuss.gradle.org/u/bensmith87)
#### Post date: [February 4, 2017, 9:08pm UTC](https://discuss.gradle.org/t/jacoco-no-subproject-coverage/21451/3 "2017-02-04T21:08:30Z")

</div>

Thanks, that works!

When I try and make it a bit less hard coded it stopped working:

```
jacocoTestReport {
    sourceDirectories = project.files(subprojects.sourceSets.main.allSource.srcDirs)
    classDirectories = project.files(subprojects.sourceSets.main.output)
}

```

It works again if i shift the jacocoTestReport closure below the subprojects closure.
