У меня есть установка maven с несколькими модулями, установка выглядит примерно так
root module
- domain module
- repository module
- service module
- controllers module
Jacoco правильно генерирует тестовое покрытие из юнит-тестов, а сонар показывает правильный процент (скажем, 20%).Surefire используется для модульных тестов.
Для интеграционных тестов это более сложно, мы используем отказоустойчивые и интеграционные тесты генерируют файл jacoco-it.exec
, который сканируется с помощью сонара.Моя проблема заключается в том, что интеграционные тесты расположены в controllers module
и показывают только тестовое покрытие интеграционных тестов для классов, которые находятся внутри контроллеров, а не для классов, которые находятся в другом модуле, таком как сервисный модуль.Из-за этого общее тестовое покрытие с интеграционными тестами увеличивается примерно до 21% вместо 35 +%.
Можно ли настроить сонар и jacoco для измерения тестового покрытия с интеграционными тестами всех классов вместо классов только из одного модуля, если интеграционные тесты находятся в controllers module
?
Для справки, это соответствующая настройка
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
...
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.9</version>
<executions>
<execution>
<id>pre-unit-test</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<destFile>${project.build.directory}/jacoco.exec</destFile>
<propertyName>surefireArgLine</propertyName>
</configuration>
</execution>
<execution>
<id>pre-integration-test</id>
<phase>pre-integration-test</phase>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<destFile>${project.build.directory}/jacoco-it.exec</destFile>
<propertyName>failsafeArgLine</propertyName>
</configuration>
</execution>
</executions>
</plugin>
Я запускаю свои тесты с mvn verify
и сканер с mvn sonar:sonar