Я унаследовал проект с несколькими модулями maven. Стандартные бизнес-классы и модульные тесты находятся в модуле под названием «код», и у нас есть хорошие простые рабочие показатели сонара для этого модуля. Второй модуль содержит различные тесты стиля интеграции, которые работают против развернутого сервера Glassfish, которые выполняются как единичный тест в модуле с интегрированной проверкой.Объединяющие метрики сонара через мультимодульный проект maven
pom.xml // root level,
code // business code and unit tests :-)
moduleA
moduleB
integ-test // ;-(
moduleA
moduleB
Я знаю, что самый простой вариант заключается в перемещении классов «МЭГ-ТЕСТ» в модуль «кода» и реорганизовать их как реальные интеграционные тесты, но на данный момент это не вариант.
Я вычислил способ записи уровня покрытия кода для модуля «Интегрированные тесты» с помощью цели jacoco: dump для загрузки jacococ.exec в модули с интегрированной проверкой.
Моя Maven структура ПОМ теперь выглядит следующим образом
pom.xml // defined jacoco verify -> report goal
code // business code and unit test
moduleA
target/jacoco.exec - unit test coverage
pom.xml
pom.xml - defines standard jacoco prepare-agent goal
integ-test //
moduleA
target/jacoco.exec - really integration test coverage
pom.xml
pom.xml- defines jacoco dump and merge
Мой текущий подход заключается в объединении всех jacococ.exec файлов в модуле «МЭГ-тест» и использовать значение «DestFile», чтобы сохранить эти данные модуль 'code' как файл jacoco-it.exec. Стандартный сонар: цель сонара должна затем поднять этот файл и использовать его в качестве покрытия интеграционного теста.
pom.xml
integ-test
moduleA
target/jacoco.exec - really integration test coverage modA
moduleB
target/jacoco.exec - really integration test coverage modB
code
moduleA
moduleB
target/jacoco-it.exec - This should be the merged content of the two files above
pom.xml
Мой корневой уровень pom.xml определяет этот jacoco-Maven-плагин конфигурации
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<configuration>
<append>true</append>
<includes>
<include>com/a/b/c/**</include>
</includes>
</configuration>
<executions>
<execution>
<id>jacoco-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-dump</id>
<phase>pre-integration-test</phase>
<goals>
<goal>dump</goal>
</goals>
</execution>
<execution>
<id>jacoco-merge</id>
<phase>post-integration-test</phase>
<goals>
<goal>merge</goal>
</goals>
<configuration>
<fileSets>
<fileSet implementation="org.apache.maven.shared.model.fileset.FileSet">
<directory>${project.basedir}/integ-test</directory>
<includes>
<include>*.exec</include>
</includes>
</fileSet>
</fileSets>
<destFile>${sonar.jacoco.itReportPath}</destFile>
</configuration>
</execution>
<execution>
<id>jacoco-site</id>
<phase>verify</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
<sonar.jacoco.itReportPath>${project.basedir}/../target/jacoco-it.exec</sonar.jacoco.itReportPath>
Я связала jacoco: сливаться цели на Maven этапе пост-интеграционного тестирования для обеспечения слияния происходит после запуска тестов, но файл «jacoco-it.exec» всегда создается в папке «integ-test».
Любые предложения?
Если вы ищете возможность слияния мультимодельных показателей Maven в Sonar, то вы делаете правильные вещи, вам могут потребоваться некоторые настройки, но если вы ищете слияние/получение комбинированных показателей сонара по проектам/группам/по типу проекта/командой/менеджером DEV и т. д., затем попробуйте модуль управления портфолио представлений в SonarQube. Это коммерческий, но рассматривает каждый анализируемый проект как компонент, а затем вы можете создавать пользовательские представления, меры, фильтры для создания комбинированных отчетов в Sonar. –