2016-09-22 7 views
6

Я пытался генерировать отчеты о покрытии кода с помощью jacoco-плагина в maven для проекта с несколькими модулями, над которым я работал.Конфигурация Maven Jacoco для многомодульных проектов

Я добавил следующее в родительский 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> 

При управлении МВН проверить, генерировались соответствующие отчеты jacoco для каждого модуля в «Проект-корневой \ модуль \ целевой \ сайт \ jacoco \»

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

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

ответ

5

Уверен, что это!

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

Для 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 сообщается с помощью эхолота, вы можете увидеть my detailed answer here.

+0

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

0

В дополнение к шагам, предложенным в markdsievers подробный ответ, я должен был установить sonarqube-5,3 (поддерживает JDK 7+) в локальном хосте: 9000

Setup SonarQube

И использовать МВН пакет генерировать jacoco .exec. Затем mvn сонар: сонар для создания отчета в приборной панели сонара.