Как объединить юнит-тесты и интеграционные тесты для покрытия sonarcloud - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь объединить покрытие для всех моих тестов, включая юнит-тесты и интеграционные тесты.У меня есть мультимодульное приложение, и я использую 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, но это ничего не меняет.

Есть идеи, как объединить все эти результаты?Спасибо!

...