2015-07-09 2 views
0

Я унаследовал проект с несколькими модулями 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».

Любые предложения?

+0

Если вы ищете возможность слияния мультимодельных показателей Maven в Sonar, то вы делаете правильные вещи, вам могут потребоваться некоторые настройки, но если вы ищете слияние/получение комбинированных показателей сонара по проектам/группам/по типу проекта/командой/менеджером DEV и т. д., затем попробуйте модуль управления портфолио представлений в SonarQube. Это коммерческий, но рассматривает каждый анализируемый проект как компонент, а затем вы можете создавать пользовательские представления, меры, фильтры для создания комбинированных отчетов в Sonar. –

ответ

0

Как насчет указывать на destFile в целевом каталоге мастера pom? Просто укажите

<configuration> 
    <append>true</append> 
    <destFile>${project.basedir}/../target/jacoco-it.exec</destFile> 
    <propertyName>jacoco.integrationtest.arguments</propertyName> 
</configuration> 

в подпроектах. Все данные покрытия будут добавлены в файл jacoco-it.exec. Этот файл поднят на sonarqube, и вы увидите покрытие как покрытие IT. Вы также можете использовать jacoco.exec как имя файла.

 Смежные вопросы

  • Нет связанных вопросов^_^