2017-02-10 88 views
2

我有一個項目,爲此我已經使用jacoco插件爲junit測試用例和集成測試生成了jacoco.exec報告文件。種子聲納與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 

但還是我不能看到聲納集成測試代碼覆蓋率,我錯過了一些步驟?

我用sonar 4.0,java-7。

注:對我們來說,jacoco.exec文件在一些其他的運行已經產生,我只是想給他們種子聲納如果可能的話,這樣,我們會獲得一些性能改進。

+0

好的,謝謝澄清和編輯相應的問題。你在使用多模塊項目嗎? –

+0

是的,這是多模塊maven項目...但這不是我關心的... –

回答

0

我們還定義2個獨立的變量在我們的POM,含看到正常的測試和集成測試所產生的路徑,我們希望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-agentprepare-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> 

這就是我們同時運行單元測試和集成,測試和f inally將結果發送到聲納:

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 

所以我們使用jacoco-ut輪廓和prepare-agent-integration install使用jacoco-it輪廓調用prepare-agent install

+0

我認爲,你運行集成測試/ junit測試,對我來說,這些已經在其他工作的其他地方(平行),我不想在這裏運行它們,我只想獲取jacoco.exec文件,然後將它們播種到聲納。只是一些性能提高,我不想再次運行它們,你認爲這可以實現嗎? –

+0

所以只需更新: - 所以這裏是我如何解決這個問題。我們正在運行的聲納服務器版本更新到5.5(在該版本需要Java-8之後),我能夠播種2個jacoco文件,一個用於junit,一個用於集成測試。它會在先前的sonarquebe中生成相同的代碼覆蓋率。 –