2017-02-10 14 views
2

У меня есть проект, для которого у меня уже есть файлы отчетов jacoco.exec с использованием jacoco-плагина для тестового примера junit и теста интеграции.Семенной сонар с junit и отчет об интеграции (jacoco.exec) от maven

Это свойство Maven я использую для гидролокатора:

<sonar.jacoco.itReportPath>${project.basedir}/target/it/jacoco.exec</sonar.jacoco.itReportPath> 
<sonar.jacoco.reportPath>${project.basedir}/target/junit/jacoco.exec</sonar.jacoco.reportPath> 
<!-- Tells Sonar to run the unit tests --> 
<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis> 
<!-- Tells Sonar to use JaCoCo as the code coverage tool --> 
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin> 
<sonar.language>java</sonar.language> 

я создал профиль для гидролокатора, как показано ниже:

<profile> 
    <id>sonar-run</id> 
    <activation> 
    <activeByDefault>true</activeByDefault> 
    </activation> 
    <properties> 
    <sonar.jdbc.url> 
     jdbc:mysql://localhost:3306/sonar 
    </sonar.jdbc.url> 
    <sonar.jdbc.username>sonar</sonar.jdbc.username> 
    <sonar.jdbc.password>123qwe</sonar.jdbc.password> 
    <sonar.host.url> 
     http://localhost:9000/ 
    </sonar.host.url> 
    </properties> 
</profile> 

Проблемы я лицо, я могу видеть, модульный тест кодовый охват в гидролокаторе, но я не могу видеть охват интеграционного теста.

Я бегу команду Maven много способов некоторые вещи, как это:

mvn verify -P sonar-run sonar:sonar 
mvn verify -P sonar-run sonar:sonar -Dtests=false 
mvn clean install -P sonar-run sonar:sonar 

, но до сих пор я не могу видеть, охват интеграционного тестирования кода в гидролокации, мне не хватает какой-то шаг?

Я использую гидролокатор 4.0, java-7.

Примечание: Для нас файлы jacoco.exec уже сгенерированы в каком-либо другом прогоне, я просто хочу, если это возможно, вынести их на сонар, таким образом мы получим некоторое улучшение производительности.

+0

Хорошо, спасибо за разъяснение и редактирование вопроса соответственно. Вы используете многомодульный проект? –

+0

Да, это мультимодульный проект maven ... но это не мое дело ... –

ответ

0

Мы также определение 2 отдельных переменных в нашем П, содержащем путь к jacoco.exec мы хотим видеть генерироваться для нормальных тестов и интеграционных тестов:

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

У нас есть 2 отдельных профили (подсечки в prepare-agent и prepare-agent-integration соответственно):

<profile> 
     <id>jacoco-ut</id> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.jacoco</groupId> 
        <artifactId>jacoco-maven-plugin</artifactId> 
        <version>${jacoco.version}</version> 
        <executions> 
         <execution> 
          <id>agent-for-ut</id> 
          <configuration> 
           <destFile>${sonar.jacoco.reportPath}</destFile> 
           <append>true</append> 
          </configuration> 
          <goals> 
           <goal>prepare-agent</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 

    <!-- Code coverage with Jacoco on integration-tests --> 
    <profile> 
     <id>jacoco-it</id> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.jacoco</groupId> 
        <artifactId>jacoco-maven-plugin</artifactId> 
        <version>${jacoco.version}</version> 
        <executions> 
         <execution> 
          <id>agent-for-it</id> 
          <configuration> 
           <destFile>${sonar.jacoco.itReportPath}</destFile> 
           <append>true</append> 
          </configuration> 
          <goals> 
           <goal>prepare-agent-integration</goal> 
          </goals> 
          </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 

Это, как мы управляем как модульные тесты и интеграционные-тесты и п аконец отправить результаты гидролокатора:

mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=true -Pdefault,jacoco-ut 
mvn org.jacoco:jacoco-maven-plugin:prepare-agent-integration install -Pintegration-tests,jacoco-it -Dmaven.test.failure.ignore=true 
mvn sonar:sonar -Pdefault -Dsonar.host.url=http://XX -Dsonar.dynamicAnalysis=reuseReports -Dmaven.test.skip=true -Dmaven.test.failure.ignore=true -DsonarPassword=XX -DsonarJdbcPassword=XX -Psonar 

Так мы называем prepare-agent install используя jacoco-ut профиль и prepare-agent-integration install используя jacoco-it профиль.

+0

Думаю, вы запустили тест intergration-test/junit, для меня они уже выполнялись где-то в другом месте (параллельно), Я не хочу запускать их здесь, я просто хочу получить файл jacoco.exec, а затем вынести их на сонар. Просто некоторые улучшения производительности я не хочу запускать их снова, как вы думаете, это может быть достигнуто? –

+0

Так просто обновить: - Вот как я исправил проблему. Версия сервера сонара обновляется до 5.5 (после этой версии требуется Java-8), я смог выложить 2 файла jacoco, один для junit и один для теста интеграции. Он генерирует то же покрытие кода в sonarquebe, что и предыдущее. –

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

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