Существует способ сделать это. Магия - создать объединенный файл jacoco.exec и сделать это в два этапа. Мой ПОМ:
<properties>
...
<jacoco.overall.exec>${maven.multiModuleProjectDirectory}/target/jacoco_analysis/jacoco.exec</jacoco.overall.exec>
</properties>
<build>
<pluginManagement>
<plugins>
...
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.8</version>
<configuration>
<destFile>${jacoco.overall.exec}</destFile>
<dataFile>${jacoco.overall.exec}</dataFile>
</configuration>
</plugin>
...
</plugins>
</pluginManagement>
</build>
<profiles>
<profile>
<id>runTestWithJacoco</id>
<activation>
<property>
<name>runTestWithJacoco</name>
<value>true</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<executions>
<execution>
<id>default-prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<append>true</append>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>createJacocoReport</id>
<activation>
<property>
<name>createJacocoReport</name>
<value>true</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<executions>
<execution>
<id>default-report</id>
<phase>validate</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
Добавьте это в родительском ПОМ и выполнить mvn clean install -DrunTestWithJacoco
и чем mvn validate -DcreateJacocoReport
. Теперь у вас есть полный охват класса, и не имеет значения, какой тест покрыл его. Магия заключается в использовании maven.multiModuleProjectDirectory
для создания комбинированного файла jacoco.exec. Это свойство доступно с maven 3.3.1 и указывает на папку, в которой вы начали сборку maven.
Испытания модуля по определению являются локальными для соответствующего модуля и не извлекаются в модуль separte. Таким образом, ваша установка для отдельного модуля модулей тестирования не имеет смысла. Намерение в Maven имеет производственный код плюс соответствующие модульные тесты в одном модуле. Поскольку в структуре папок отображается производственный код src/main/java. 'src/test/java' единичный тестовый код. – khmarbaise
Я думаю, что это правильная установка, если вы рассматриваете модуль тестирования как место для тестов интеграции. На данный момент кажется, что jacoco не поддерживает это, вы можете попробовать Sonar, если у вас настроение действительно это сделать. В противном случае дождитесь следующей версии Jacoco, она может фактически ее поддерживать: D (https://github.com/jacoco/jacoco/pull/97) – AMilassin
Если мы говорим об интеграционных тестах да, но это не написано в вопрос. – khmarbaise