Я пытаюсь объединить покрытие для всех моих тестов, включая юнит-тесты и интеграционные тесты.У меня есть мультимодульное приложение, и я использую Maven.Иерархия выглядит следующим образом:
Project :
- ad-service (Unit + IT)
- category-service (Unit + IT)
- chat-service (Unit)
Я хочу объединить все мои тестовые покрытия в одно большое покрытие.
Когда я cd ad-service
и я запускаю mvn clean verify sonar:sonar etc..
, я объединил свой модульный тест + интеграционные тесты.Но когда я пытался выполнить mvn clean verify sonar:sonar etc..
из родительской иерархии проекта, у меня был только один охват.
Я пытался объединить их в один файл, но он все еще не работает.
Вот мой родитель pom.xml
:
<properties>
<version.thorntail>2.3.0.Final</version.thorntail>
<version.h2>1.4.197</version.h2>
<failOnMissingWebXml>false</failOnMissingWebXml>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<skip-docker-build>true</skip-docker-build>
<skip-docker-compose>false</skip-docker-compose>
<dockerHost>tcp://localhost:2375</dockerHost>
<failsafe.runOrder>alphabetical</failsafe.runOrder>
<main.basedir>${project.basedir}</main.basedir>
<sonar.coverage.jacoco.xmlReportPaths>${project.basedir}/../target/jacoco.exec</sonar.coverage.jacoco.xmlReportPaths>
</properties>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>false</skipTests>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>io.thorntail</groupId>
<artifactId>thorntail-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>package</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<configuration>
<destFile>${sonar.jacoco.reportPath}</destFile>
<append>true</append>
</configuration>
<executions>
<execution>
<id>prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Вот один из моих child pom
:
<properties>
<skip-docker-build>false</skip-docker-build>
<main.basedir>${project.parent.basedir}</main.basedir>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<executions>
<execution>
<id>unit-tests</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>pre-integration-test-prepare-agent</id>
<phase>pre-integration-test</phase>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<append>false</append>
<propertyName>jacoco.it.tests</propertyName>
<destFile>${project.build.directory}/jacoco-it.exec</destFile>
<address>localhost</address>
<output>tcpserver</output>
<port>10001</port>
<reset>false</reset>
<skip>${skip.dump}</skip>
</configuration>
</execution>
<execution>
<id>post-integration-test-prepare-agent</id>
<phase>post-integration-test</phase>
<goals>
<goal>dump</goal>
</goals>
<configuration>
<append>false</append>
<propertyName>jacoco.it.tests</propertyName>
<destFile>${project.build.directory}/jacoco-it.exec</destFile>
<address>localhost</address>
<output>tcpserver</output>
<port>10001</port>
<reset>false</reset>
<skip>${skip.dump}</skip>
</configuration>
</execution>
<execution>
<id>merge-coverage</id>
<phase>install</phase>
<goals>
<goal>merge</goal>
</goals>
<configuration>
<destFile>${project.build.directory}/coverage-merged.exec</destFile>
<fileSets>
<fileSet>
<directory>${project.build.directory}</directory>
<includes>
<include>*.exec</include>
</includes>
</fileSet>
</fileSets>
</configuration>
</execution>
<execution>
<id>verify-report</id>
<phase>install</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<dataFile>${project.build.directory}/coverage-merged.exec</dataFile>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>io.thorntail</groupId>
<artifactId>thorntail-maven-plugin</artifactId>
<configuration>
<jvmArguments>
<jvmArgument>${jacoco.it.tests}</jvmArgument>
</jvmArguments>
<properties>
<thorntail.port.offset>20000</thorntail.port.offset>
</properties>
</configuration>
<executions>
<execution>
<goals>
<goal>package</goal>
</goals>
</execution>
<execution>
<id>pre-integration-test-start</id>
<phase>pre-integration-test</phase>
<goals>
<goal>start</goal>
</goals>
<configuration>
<jvmArguments>
<jvmArgument>${jacoco.it.tests}</jvmArgument>
</jvmArguments>
</configuration>
</execution>
<execution>
<id>verify-stop</id>
<phase>verify</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Но потом, когда я запускаю mvn clean verify sonar:sonar etc..
из папки Project /Сонар пытается и, очевидно, не находит все отчеты jacoco.exec в подмодуле.Я попытался указать с помощью -Dsonar.coverage.jacoco.reportPaths=jacoco-it.exec
, но это ничего не меняет.
Есть идеи, как объединить все эти результаты?Спасибо!