I've configured my project with SonarQube and Jacoco for code coverage. Everything works well except one thing. I divided project in many maven sub modules:
project (pom.xml) -
|-moduleA (no pom here)
| |- it (pom.xml) - integration tests for "impl" module
| |- impl (pom.xml) - implementaion + Unit tests
|-moduelB
| |- it (pom.xml) - integration tests for "impl" module
| |- impl (pom.xml) - implementaion + Unit tests
|-moduleC ...
I start build using following command:
mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent -Dmaven.compiler.debug=true install sonar:sonar
The problem is that Jacoco can easily support Unit test coverage inside the same module (so in my case Unit Tests inside impl
module) but cannot analyze coverage from it
module which itself does not contain any implementation classes. It just contains integration tests for impl
module. It's clear for me why it doesn't work. I'm getting such info in Jacoco logs:
No JaCoCo analysis of project coverage can be done since there is no class files.
After I've defined sonar.java.binaries
property inside moduleA/it/pom.xml like this:
<properties>
<sonar.java.binaries>../impl/target/classes</sonar.java.binaries>
</properties>
coverage analysis of it
still fails, but message in Jacoco logs changes to:
[INFO] Analysing D:\project\moduleA\it\target\jacoco.exec
[WARNING] Coverage information was not collected. Perhaps you forget to include debug information into compiled classes?
I must mention that D:\project\moduleA\it\target\jacoco.exec
file exists. I also checked that compiled classes in D:\project\moduleA\impl\target\classes
contain debug data (all lines, vars and source).
I was trying with different paths inside sonar.java.binaries
but result is always the same. I've tried:
../impl/target/classes
../../impl/target/classes
../../../impl/target/classes
../impl/target
...
How can I configure Jacoco (Sonar) to allow it to find classes binaries in different maven sub module related to jacoco.exec file?
src/main/java
for production code andsrc/it/test
for integration test in the same module. – Sandra Parsick