Since TeamCity 8.1, TeamCity supports JaCoCo, a Java Code Coverage tool allowing you to measure a wide set of coverage metrics and code complexity. JaCoCo is available for the following build runners: Ant, IntelliJ IDEA Project, Gradle and Maven.
note
To ensure the coverage data is collected properly, make sure your tests run in (one or more) separate JVMs.
Ant and Intellij Idea Project runners: this is the default setting for TestNG, for Junit test task, set fork=true.
Maven runner: set forkCount to a value higher than.
Gradle runner: this is the default setting for Gradle tests.
TeamCity supports the java agent coverage mode allowing you to collect coverage without modifying build scripts or binaries. No additional build steps needed - just choose JaCoCo coverage in a build step which runs tests:
In the Code Coverage section, select JaCoCo as a coverage tool in the Choose coverage runner drop-down.
Set up the coverage options - refer to the description of the available options below.
Option
Description
Example
Classfile directories or jars
Newline-delimited set of path patterns in the form of +|-:[path] to scan for classfiles to be analyzed. Libraries and test classfiles are not needed to be listed unless their coverage is wanted.
+:src/main/java/**
Classes to instrument
Newline-delimited set of classname patterns in the form of +|-:[path]. Allows filtering out unwanted classes listed in "Classfile directories or jars" field. Useful in case test classes are compiled.
+:com.package.core.* -:com.package.*Test*
The code coverage results can be viewed on the Overview tab of the Build Results page; detailed report is displayed on the dedicated Code Coverage tab.