2016-05-30 2 views
0

[введите описание изображения здесь] [1] [введите описание изображения здесь] [2] Я знаю, что многие люди сталкиваются с подобной проблемой. я показываю много ансваров, попробовал образец кода, указанный на гидролокаторе. этот образец работает нормально. Также я показать следующую ссылкуНевозможно получить покрытие для тестирования в sonarqube

How to configure multi-module Maven + Sonar + JaCoCo to give merged coverage report?

Но ничто не кажется, работает в моем случае. Это не показывает IT Test Coverage в sonarqube, хотя mvn clean intsall делает папку jacoco на сайте, где index.html имеет отчет о покрытии. Я пробовал почти все в сети, но не смог решить проблему. его проект с несколькими модулями Я использую

java8.

sonarqube 4.5.6 с плагином java 2.5.1.

Maven 3.0.5

пожалуйста, помогите мне решить эту проблему.

Ниже родительского модуль П файл

<build> 
<pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.jacoco</groupId> 
       <artifactId>jacoco-maven-plugin</artifactId> 
       <version>${jacoco-maven-plugin.version}</version> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>${maven-compiler-plugin.version}</version> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.jacoco</groupId> 
      <artifactId>jacoco-maven-plugin</artifactId> 
      <configuration> 
       <append>true</append> 
      </configuration> 
      <executions> 
       <execution> 
        <id>pre-unit-test</id> 
        <goals> 
         <goal>prepare-agent</goal> 
        </goals>  
        <configuration> 
         <destFile>${project.basedir}/target/jacoco.exec</destFile> 
         <propertyName>surefireArgLine</propertyName> 
        </configuration> 
       </execution> 
       <execution> 
        <id>post-unit-test</id> 
        <phase>test</phase> 
        <goals> 
         <goal>report</goal> 
        </goals> 
        <configuration> 
         <!-- Sets the path to the file which contains the execution data. --> 
         <dataFile>${project.build.directory}/../target/jacoco.exec</dataFile> 
        </configuration> 
       </execution> 
       <execution> 
        <id>pre-integration-test</id> 
        <phase>pre-integration-test</phase> 
        <goals> 
         <goal>prepare-agent</goal> 
        </goals> 
        <configuration> 
         <destFile>${project.basedir}/../target/jacoco-it.exec</destFile> 
         <propertyName>failsafe.argLine</propertyName> 
        </configuration> 
       </execution> 
       <execution> 
        <id>post-integration-test</id> 
        <phase>post-integration-test</phase> 
        <goals> 
         <goal>report</goal> 
        </goals> 
        <configuration> 
         <dataFile>${project.basedir}/../target/jacoco-it.exec</dataFile> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>${maven-surefire-plugin.version}</version> 
      <configuration> 
       <!-- Sets the VM argument line used when unit tests are run. --> 
       <argLine>${surefireArgLine}</argLine> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-failsafe-plugin</artifactId> 
      <version>${maven-failsafe-plugin.version}</version> 
      <configuration> 
       <argLine>${failsafe.argLine}</argLine> 
       <includes> 
        <include>**/*Test.java</include> 
       </includes> 
      </configuration> 
      <executions> 
       <execution> 
        <id>integration-test</id> 
        <goals> 
         <goal>integration-test</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>verify</id> 
        <goals> 
         <goal>verify</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     <!-- automatic label creation --> 

    </plugins> 
    </build> 
    <!-- Plugin to generate unit test coverage in SonarQube 4.5.x report. --> 

<reporting> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <configuration> 
      <use>false</use> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-report-plugin</artifactId> 
      <version>${maven-surefire-report-plugin.version}</version> 
      <configuration> 
       <alwaysGenerateFailsafeReport>true</alwaysGenerateFailsafeReport> 
       <alwaysGenerateSurefireReport>true</alwaysGenerateSurefireReport> 
       <aggregate>true</aggregate> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.jacoco</groupId> 
      <artifactId>jacoco-maven-plugin</artifactId> 
      <version>${jacoco-maven-plugin.version}</version> 
      <configuration> 
       <excludes> 
        <exclude>**/*.mar</exclude> 
        <exclude>${jacoco.excludePattern}</exclude> 
       </excludes> 
      </configuration> 
     </plugin> 
    </plugins> 
</reporting> 

свойство в одном файле п

<sonar.java.codeCoveragePlugin>jacoco</sonar.java.codeCoveragePlugin> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
    <sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath> <!-- This is the default, put here to be explicit --> 
    <sonar.jacoco.itReportPath>${project.basedir}/../target/jacoco-it.exec</sonar.jacoco.itReportPath> 
    <sonar.language>java</sonar.language> 
    <sonar.java.binaries>${project.basedir}/../target/classes</sonar.java.binaries> 
    <jacoco-maven-plugin.version>0.7.4.201502262128</jacoco-maven-plugin.version> 
    <maven-compiler-plugin.version>3.5.1</maven-compiler-plugin.version> 
    <maven-surefire-report-plugin.version>2.19.1</maven-surefire-report-plugin.version> 
    <maven-surefire-plugin.version>2.16</maven-surefire-plugin.version> 
    <maven-failsafe-plugin.version>2.16</maven-failsafe-plugin.version> 

МВН чистой установка создает папку jacoco с index.html для тестового покрытия, но МВН сонара : сонар не показывает его в sonarqube

какая ошибка я изготовление.

in mvn sonar: sonar, он успешно строится, и одна из линий - JaCoCoSensor: отчет JaCoCo не найден.

, что может быть причиной

я серьезно считаю, что это ошибка с jacoco или sonarqube. Может быть, это не совместимо с java 8 или чем-то. Я пробовал почти все. Многие вещи устарели с помощью сонарного java-плагина 2.5.1. Пожалуйста, помогите мне, мне нужно решение отчаянно

+0

** sonar.dynamicAnalysis ** осуждаются с гидролокатором Java Plugin 2.5.1 –

+0

Может быть сочетанием плагин бы код образца проблемы –

+0

на линии работает хорошо, потому что в нем нет тестовых случаев интеграции .... Пожалуйста, помогите мне –

ответ

0

Просто попробовал, и sample project отлично работает. Пожалуйста, убедитесь, что вы делаете следующее:

git clone https://github.com/SonarSource/sonar-examples.git 
cd projects/languages/java/code-coverage/combined ut-it/combined-ut-it-multimodule-maven-jacoco 
mvn clean package 
mvn sonar:sonar 

Кроме того - не уверен, что это связано, но вы используете очень старую версию плагина SQ Java (2.5.1). Я могу только посоветовать вам обновить его до последней версии.

+0

Спасибо Фабрицио. Раньше я пытался попробовать проект. В любом случае я могу решить это сейчас. Я получил решение, разместив плагины Jacoco со своими шагами в файле child pom. Еще одна вещь, мой модуль - это один большой модуль, поэтому его создание давало проблему, поэтому я использовал argLine как свойство, а не в плагине surefire –

0

Ну, я не уверен, почему приведенный выше код не работает, но я попробовал одну и ту же вещь по-другому, и произошло чудо. Позвольте мне дать решение, что сработало для меня.

Я удалил приведенный ниже код из родительского пом и поместил его во все дочерние помпы. Кроме того, поскольку я использовал его в дочернем модуле, я использовал target/jacoco.exec вместо $ {project.basedir} /../ target/jacoco.exec и тот же для jacoco-it.exec.

<plugin> 
     <groupId>org.jacoco</groupId> 
     <artifactId>jacoco-maven-plugin</artifactId> 
     <executions> 
      <execution> 
       <id>pre-unit-test</id> 
       <goals> 
        <goal>prepare-agent</goal> 
       </goals>  
       <configuration> 
        <destFile>target/jacoco.exec</destFile> 
        <propertyName>surefireArgLine</propertyName> 
        <append>true</append> 
       </configuration> 
      </execution> 
      <execution> 
       <id>post-unit-test</id> 
       <phase>test</phase> 
       <goals> 
        <goal>report</goal> 
       </goals> 
       <configuration> 
        <!-- Sets the path to the file which contains the execution data. --> 
        <dataFile>target/jacoco.exec</dataFile> 
       </configuration> 
      </execution> 
      <execution> 
       <id>pre-integration-test</id> 
       <phase>pre-integration-test</phase> 
       <goals> 
        <goal>prepare-agent</goal> 
       </goals> 
       <configuration> 
        <destFile>target/jacoco-it.exec</destFile> 
        <propertyName>failsafe.argLine</propertyName> 
        <append>true</append> 
       </configuration> 
      </execution> 
      <execution> 
       <id>post-integration-test</id> 
       <phase>post-integration-test</phase> 
       <goals> 
        <goal>report</goal> 
       </goals> 
       <configuration> 
        <dataFile>target/jacoco-it.exec</dataFile> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin> 

Дополнительная информация. следующий плагин, который я упомянул в моем вопросе, не требуется, если покрытие тестирования требуется только в отчете сонара.Если есть потребность в отчете коды отдельно, то его требуется

<plugin> 
     <groupId>org.jacoco</groupId> 
     <artifactId>jacoco-maven-plugin</artifactId> 
     <version>${jacoco-maven-plugin.version}</version> 
     <configuration> 
      <excludes> 
       <exclude>**/*.mar</exclude> 
       <exclude>${jacoco.excludePattern}</exclude> 
      </excludes> 
     </configuration> 
    </plugin> 
Смежные вопросы