Конфигурация Maven Jacoco для многомодульных проектов

Я пытался создать отчеты о покрытии кода, используя плагин jacoco в maven для проекта с несколькими модулями, над которым я работал.

Я добавил следующее в свой родительский pom.xml в тегах сборки.

      <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.7.8-SNAPSHOT</version>
            <configuration>
                <output>file</output>
                <append>true</append>
            </configuration>
            <executions>
                <execution>
                    <id>jacoco-initialize</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
                <execution>
                    <id>jacoco-site</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.18.1</version>
            <configuration>
                <argLine>${argLine}</argLine>
            </configuration>
        </plugin>

При запуске mvn verify соответствующие отчеты jacoco были созданы для каждого модуля в "project-root\module\target\site\jacoco\".

Можно ли создать сводный отчет jacoco в корне проекта, содержащий сведения о тестовом покрытии каждого модуля?

Пожалуйста, предложите наилучший способ объединения отчетов отдельных модулей.


person John    schedule 22.09.2016    source источник


Ответы (2)


Уверенный!

Мне потребовалось некоторое время и несколько источников, чтобы приготовить этот шаблон, но он работал хорошо.

Для многомодульного проекта Maven:

ROOT
|--LIB-1
|--LIB-2

Оба проекта LIB имеют собственные модульные тесты.

ROOT pom.xml

<!- properties-->
<jacoco.reportPath>${project.basedir}/../target/jacoco.exec</jacoco.reportPath>

<!-- build/plugins (not build/pluginManagement/plugins!) -->
<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.7.6.201602180812</version>
    <executions>
        <execution>
            <id>agent-for-ut</id>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
            <configuration>
                <append>true</append>
                <destFile>${jacoco.reportPath}</destFile>
            </configuration>
        </execution>
    </executions>
</plugin>

LIB проекты pom.xml будут наследовать выполнение плагинов JaCoCo, поэтому просто нужно подключить argline в плагине Surefire.

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.18.1</version>
    <configuration>
        <argLine>${argLine}</argLine>
    </configuration>
 </plugin>

У меня есть расширенный ответ для свертывания интеграционных тестов, а также модульных тестов для JaCoCo, о которых сообщается через Sonar, вы можете увидеть мой подробный ответ здесь.

person markdsievers    schedule 22.09.2016
comment
Спасибо .... Я выполнил шаги, упомянутые в вашем подробном ответе. Наконец, это сработало :) - person John; 22.09.2016

В дополнение к шагам, предложенным в подробном ответе markdsievers, мне пришлось настроить sonarqube-5.3 (поддерживает jdk 7+) на локальном хосте: 9000.

Настройка SonarQube

И используйте пакет mvn для создания файлов jacoco.exec. Затем mvn sonar:sonar для создания отчета на панели управления сонара.

person John    schedule 22.09.2016