Knowledge Base > Cover CLI > Generating JaCoCo reports
Generating JaCoCo reports
JaCoCo reports are an essential component of Cover Reports, which provides insights about your code to help your team identify gaps in your application’s coverage.
- How to generate a JaCoCo report (Maven)
- How to generate a JaCoCo report (Gradle)
- Filtering out tests in a JaCoCo report
How to generate a JaCoCo report (Maven)
To generate a JaCoCo report in a Maven project:
1. Add the following declarations to the pom.xml
file:
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.5</version>
</dependency>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.5</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
2. Run: mvn test
This creates a coverage report in binary format called jacoco.exec
in the target
directory of your Maven project. The report is also in XML, HTML and CSV formats in the target/site/jacoco
directory.
Please note that if you are generating a file to use with Diffblue Cover Reports, you need to use the report in XML format. You can also visualize the jacoco.exec report in Intellij IDEA.
How to generate a JaCoCo report (Gradle)
To generate a JaCoCo report in a Gradle project:
1. Add the JaCoCo plugin to your build.gradle
file:
apply plugin: 'jacoco'
2. Include the following configuration to enable the generation of the xml reports:
jacocoTestReport {
dependsOn test
reports {
xml.enabled true
csv.enabled true
}
}
3. To ensure that you run JaCoCo, we recommend adding finalizedBy jacocoTestReport
to your test configuration, for example:
test {
finalizedBy jacocoTestReport
}
Filtering out tests in a JaCoCo report
You can also filter out the tests shown in the JaCoCo report. The following examples assume the default Cover test class suffix (DiffblueTest) is in use.
To generate a JaCoCo report which filters out the tests generated by Cover
Maven
- Add the Surefire plugin (minimum version 2.22.0) to your
pom.xml
file - Use the command:
mvn clean test -Dtest=!*DiffblueTest
Please note that in certain environments, you may need to use the following alternative (which has additional single quotation marks): mvn clean test -Dtest='!*DiffblueTest'
Gradle
1. Add a property to build.gradle
:
test {
if (project.hasProperty('excludeTests')) {
exclude project.property('excludeTests')
}
}
2. Use the command: ./gradlew test -PexcludeTests=**/*DiffblueTest*
To generate a JaCoCo report which only takes into account those tests written by Cover
Maven
- Use the command:
mvn clean test -Dtest=*DiffblueTest
Gradle
- Use the command:
./gradlew test --tests *DiffblueTest