JaCoCo проверить цель для интеграционных тестов

Я считаю, что плагины JaCoCo Maven check Цель не поддерживает интеграционные тесты в многомодульном проекте (где интеграционные тесты находятся в модуле, отличном от тестируемого кода).

У меня есть проект со следующей структурой:

service
├── webapp
├── lib1
├── lib2
└── integration-test

webapp зависит от lib1 а также lib2 и строит на войну, integration-test использует контейнер в памяти для запуска webapp и выполнить тесты против него.

Моя конфигурация такова, что JaCoCo успешно генерирует консолидированные файлы данных (jacoco.exec а также jacoco-it.exec в service/target/) для юнит-тестов в { webapp, lib1, lib2 } И покрытие интеграционных тестов для тестов, запущенных в integration-test,

При добавлении в конфигурации для check Я получаю этот вывод из плагина.

[INFO] --- jacoco-maven-plugin:0.7.8:check (default-check) @ integration-test ---
[INFO] Skipping JaCoCo execution due to missing classes directory:/home/mark/workspace/service/integration-test/target/classes

Ошибка точная, так как integration-test Модуль имеет только тестовый источник, поэтому нет target/classes каталог. Добавление исходного каталога не помогло, check не удалось указать покрытие 0%, потому что в target/classes каталог. Из этого (и глядя на источник чека Mojo) кажется, check цель требует classes каталоги всех модулей, которые он использует (webapp, lib1, lib2).

Такой конфигурации не существует в check что позволяет мне указать, где classes каталоги и не похоже, что он поддерживает такую ​​функцию, глядя на источник.

Корень / родитель pom.xml

<properties>
    <sonar.jacoco.itReportPath>${project.basedir}/../target/jacoco-it.exec</sonar.jacoco.itReportPath>
    <sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
</properties>

<-- Note, I am using build/plugins/plugin - not build/pluginManagement/plugin

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.7.8</version>

    <executions>
        <execution>
            <id>agent-for-ut</id>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
            <configuration>
                <append>true</append>
                <destFile>${sonar.jacoco.reportPath}</destFile>
            </configuration>
        </execution>
        <execution>
            <id>agent-for-it</id>
            <goals>
                <goal>prepare-agent-integration</goal>
            </goals>
            <configuration>
                <append>true</append>
                <destFile>${sonar.jacoco.itReportPath}</destFile>
            </configuration>
        </execution>
        <execution>
            <id>default-check</id>
            <goals>
                <goal>check</goal>
            </goals>
            <phase>verify</phase>
            <configuration>
                <dataFile>${sonar.jacoco.itReportPath}</dataFile>
                <rules>
                    <rule>
                        <element>BUNDLE</element>
                        <limits>
                            <limit>
                                <counter>LINE</counter>
                                <value>COVEREDRATIO</value>
                                <minimum>0.9800</minimum>
                            </limit>
                        </limits>
                    </rule>
                </rules>
            </configuration>
        </execution>
    </executions>
</plugin>

integration-test pom.xml

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.19.1</version>
    <executions>
        <execution>
            <goals>
                <goal>integration-test</goal>
                <goal>verify</goal>
            </goals>
            <configuration>
                <skipTests>${skipTests}</skipTests>
                <argLine>${argLine} -Duser.timezone=UTC -Xms256m -Xmx256m</argLine>
                <reuseForks>false</reuseForks>
            </configuration>
        </execution>
    </executions>
</plugin>

0 ответов

Другие вопросы по тегам