Maven Jacoco: Jacoco: отчет не выбирает конфигурацию из pom.xml - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь разделить генерацию анализа покрытия jacoco для моих модульных тестов.

Я создал (в своем pom.xml) специальный профиль для него, потому что я не хочу запускать тесты во всех моих средах.

Это раздел профиля в моем pom.xml:

<profile>
            <id>unit-tests</id>

            <activation>
                <property>
                    <name>env.SPRING_BOOT_ACTIVE_PROFILE</name>
                    <value>!prod</value>
                </property>
            </activation>

            <dependencies>
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-devtools</artifactId>
                    <scope>runtime</scope>
                </dependency>

                <!--embedded tomcat server (needed to run tests)-->
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                    <scope>provided</scope>
                </dependency>

                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-test</artifactId>
                    <scope>test</scope>
                </dependency>

            </dependencies>

            <build>
                <plugins>
                    <!-- Code coverage plugin -->
                    <plugin>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                        <version>0.8.2</version>
                        <executions>
                            <!--
                                Prepares the property pointing to the JaCoCo runtime agent which
                                is passed as VM argument when Maven the Surefire plugin is executed.
                            -->
                            <execution>
                                <id>pre-unit-test</id>
                                <goals>
                                    <goal>prepare-agent</goal>
                                </goals>
                                <configuration>
                                    <!-- Sets the path to the file which contains the execution data. -->
                                    <destFile>${jacoco.ut.execution.data.file}</destFile>
                                    <!--
                                        Sets the name of the property containing the settings
                                        for JaCoCo runtime agent.
                                    -->
                                    <propertyName>surefireArgLine</propertyName>
                                </configuration>
                            </execution>
                            <!--
                                Ensures that the code coverage report for unit tests is created after
                                unit tests have been run.
                            -->
                            <execution>
                                <id>post-unit-test</id>

                                <goals>
                                    <goal>report</goal>
                                </goals>
                                <configuration>
                                    <!-- Sets the path to the file which contains the execution data. -->
                                    <dataFile>${jacoco.ut.execution.data.file}</dataFile>
                                    <!-- Sets the output directory for the code coverage report. -->
                                    <outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
                                </configuration>
                            </execution>
                            <!--
                                Prepares the property pointing to the JaCoCo runtime agent which
                                is passed as VM argument when Maven the Failsafe plugin is executed.
                            -->

                        </executions>

                    </plugin>

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <!-- this dependency is only needed to fix a bug in open jdk 8 (test)-->
                            <useSystemClassLoader>false</useSystemClassLoader>
                            <argLine>${surefireArgLine}</argLine>
                        </configuration>
                    </plugin>

                </plugins>

            </build>

        </profile>

Первые команды запуска в этом порядке мвн чистый тест mvn mvn jacoco: отчет

после запуска команды mvn test, jacoco генерирует файл, содержащий информацию о корректном покрытии в позиции, указанной свойством "jacoco.ut.execution.data.file"

но когда я запускаю команду mvn jacoco: report, я получаю эту ошибку

 --- jacoco-maven-plugin:0.8.2:report (default-cli) @ springbootseed ---
Skipping JaCoCo execution due to missing execution data file.

Я пытался удалить строку

<destFile>${jacoco.ut.execution.data.file}</destFile>

из конфигурации выполнения агента подготовки, и таким образом jacoco записывает файл в папку по умолчанию (target / jacoco.exec)

При такой настройке jacoco правильно выбирает файл и генерирует отчет в расположении по умолчанию (site / jacoco).

По этим причинам я думаю, что jacoco не выбирает конфигурацию из pom при запуске mvn jacoco: report

как я могу это исправить?

Заранее спасибо

1 Ответ

0 голосов
/ 29 ноября 2018

Попробуйте определить 'argLine' только свойство maven и удалите из плагина surefire и jacoco, как упомянуто здесь: https://docs.sonarqube.org/display/PLUG/Usage+of+JaCoCo+with+SonarJava. Это сработало для меня.

...