2017-02-10 11 views
2

私はjacocoプラグインを使ってjacocoプラグインを使ってjacoco.execレポートファイルを生成しました。junitと統合テストレポート(jacoco.exec)を持つs​​eedソナー

これは私がソナーに使用する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ファイルはすでにいくつかの他の実行で生成され、私は可能であれば、我々はいくつかのパフォーマンスの改善を得ることができますこの方法をSONARするためにそれらをシードします。

+0

問題を明確にして編集していただきありがとうございます。マルチモジュールプロジェクトを使用していますか? –

+0

それはマルチモジュールのプロジェクトです...しかし、それは私の心配ではありません... –

答えて

0

我々はまた、通常のテストや統合テスト用に生成を参照してくださいする私たちが望むjacoco.execへのパスを含む、私たちのポンポンで2つの独立変数を定義している:

<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-itプロファイルを使用してjacoco-utプロファイルを使用してprepare-agent installを呼び出し、prepare-agent-integration install

+0

私は、intergration-test/junitテストを実行すると思います。私にとっては、それらはすでに他のジョブ)、私はここでそれらを実行したくない、ちょうどjacoco.execファイルを取得し、ソナーにそれらをシードしたい。私はもう一度それらを実行したくないパフォーマンスの向上だけで、これは達成できると思いますか? –

+0

ちょうど更新するには: - ここで私はどのように問題を修正したのですか?私たちが実行しているソナーサーバのバージョンは5.5(Java-8のバージョンが必要です)に更新されました。私は2つのjacocoファイルを作成できました.1つはjunit用、もう1つは統合テスト用です。前と同じソナーレベで同じコードカバレッジを生成します。 –

関連する問題