2017-11-27 6 views
0

おはよう、 私はソナーのテストカバレッジに自分のITを入れようとしています。私はマルチモジュールプロジェクトを持っており、これをすべてのモジュールで動作させたいと思っています。私は文書を通じてそれを得たので、限り、私が見つかりました:https://docs.sonarqube.org/display/PLUG/Usage+of+JaCoCo+with+Java+Plugin ソナートラフでITテストを受ける

  • https://github.com/SonarSource/sonar-scanning-examples/tree/master/sonarqube-scanner-maven

    しかし、私が実行すると、テストには0%のように見えるので、間違ったことをしています。私が間違って行ったところに置かれたものは、うまくいくでしょう。

    私の主なポンポン:

     <properties> 
         <maven-failsafe-plugin.version>2.20.1</maven-failsafe-plugin.version> 
         <maven-surefire-plugin.version>2.20.1</maven-surefire-plugin.version> 
         <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin> 
         <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>    
         <sonar.jacoco.reportPaths>${project.basedir}/../target/</sonar.jacoco.reportPaths> 
         <argLine>-Xmx256m -XX:MaxPermSize=200m</argLine> 
         </properties> 
         ... 
    <build> 
    <plugins> 
        <plugin> 
        <groupId>org.jacoco</groupId> 
        <artifactId>jacoco-maven-plugin</artifactId> 
        <version>${jacoco-maven-plugin.version}</version> 
        <configuration> 
         <append>true</append> 
        </configuration> 
        <executions> 
         <execution> 
         <id>agent-for-ut</id> 
         <goals> 
          <goal>prepare-agent</goal> 
         </goals> 
         <configuration> 
          <destFile>${project.basedir}/../target/jacoco-ut.exec</destFile> 
         </configuration> 
         </execution> 
         <execution> 
         <id>agent-for-it</id> 
         <goals> 
          <goal>prepare-agent-integration</goal> 
         </goals> 
         <configuration> 
          <destFile>${project.basedir}/../target/jacoco-it.exec</destFile> 
         </configuration> 
         </execution> 
         <execution> 
         <id>jacoco-site</id> 
         <phase>verify</phase> 
         <goals> 
          <goal>report</goal> 
         </goals> 
         </execution> 
        </executions> 
        </plugin> 
        <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-failsafe-plugin</artifactId> 
        <version>${maven-failsafe-plugin.version}</version> 
        </plugin> 
        <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <version>${maven-surefire-plugin.version}</version> 
        <configuration> 
         <trimStackTrace>false</trimStackTrace> 
        </configuration> 
        </plugin> 
    </plugins> 
    </build> 
    

    アイブ氏は一日私の気持ちのためにいじりされ、明確なカットは私が間違っているの何を答えて見つかっていません。だから、いくつかの入力が非常に参考に

  • 答えて

    0

    だろううまくユニットと統合テストの両方のためのカバレッジが少し壊れやすいです...あなたが持っている

    構成がOKになります。私は何が起こるかもしれないと思う "argLine"プロパティが置き換えられるか、またはsurefireまたはフェイルセーフプラグインのために正しく設定されていないということです。 -Xでmvnの目標を実行すると、フェイルセーフがその値を開始したときに何が起こるのかがよく分かります。 argLineには、カバレッジ情報を収集するためのjacocoエージェントが含まれている必要があります。

    フェイルセーフは、カバレッジ結果を確実に同じjacoco.execファイルに書き込むことがあります。

    すべてのことをプロファイルに入れてjacoco-pluginのカスタムプロパティを使用し、カバレッジファイルを別々にして、ソナーレポートがそれを拾うことができるようにしました。 :

    ソーナージャココリスナーは、どのテストがどのプロダクションコードをカバーしているかを知りたい場合にのみ必要です。ソナーでは、緑色のバーにコードと呼ばれるテストが表示されます。

    それ以外

    ポンポンは、いくつかのプロパティがあります。

    <surefire.jvm.args></surefire.jvm.args> 
        <failsafe.jvm.args></failsafe.jvm.args> 
        <jacoco.append>true</jacoco.append> 
    </properties> 
    

    必要に応じてこれらを設定することができ、設定がデフォルトですargLine(と競合しないようにするために独自のプロパティを使用しています

    sonar.jacoco.reportPathを使用すると、すべてのMavenモジュールに対して1つのファイルを書き込むことができます。これは、統合テストが異なるモジュールにあり、カバレッジも測定したい場合に適していますコード通りですが、うまくいけば...アフィリエイトとスタッフ):

    私のカバレッジプロファイルは以下の通りです:(以下を含む:my/packages/*パターン!)

    <profile> 
         <dependencies> 
          <dependency> 
           <groupId>org.codehaus.sonar-plugins.java</groupId> 
           <artifactId>sonar-jacoco-listeners</artifactId> 
           <version>3.2</version> 
           <scope>test</scope> 
          </dependency> 
         </dependencies> 
         <build> 
          <plugins> 
           <plugin> 
            <groupId>org.jacoco</groupId> 
            <artifactId>jacoco-maven-plugin</artifactId> 
            <version>${jacoco.version}</version> 
            <executions> 
             <!-- prepare configuration for surefire tests --> 
             <execution> 
              <id>prepare-agent</id> 
              <phase>initialize</phase> 
              <goals> 
               <goal>prepare-agent</goal> 
              </goals> 
              <configuration> 
               <destFile>${sonar.jacoco.reportPath}</destFile> 
               <propertyName>jacoco.agent.argLine</propertyName> 
               <append>true</append> 
              </configuration> 
             </execution> 
             <!-- prepare configuration for failsafe integration tests --> 
             <execution> 
              <id>prepare-agent-integration</id> 
              <phase>pre-integration-test</phase> 
              <goals> 
               <goal>prepare-agent-integration</goal> 
              </goals> 
              <configuration> 
               <destFile>${sonar.jacoco.itReportPath}</destFile> 
               <propertyName>jacoco.agent.it.argLine</propertyName> 
               <append>true</append> 
              </configuration> 
             </execution> 
            </executions> 
            <configuration> 
             <includes> 
              <include>my/packages/*</include> 
             </includes> 
            </configuration> 
           </plugin> 
           <plugin> 
            <groupId>org.apache.maven.plugins</groupId> 
            <artifactId>maven-surefire-plugin</artifactId> 
            <configuration> 
             <properties> 
              <property> 
               <name>listener</name> 
               <value>org.sonar.java.jacoco.JUnitListener</value> 
              </property> 
             </properties> 
             <argLine>${jacoco.agent.argLine} ${surefire.jvm.args}</argLine> 
            </configuration> 
           </plugin> 
           <plugin> 
            <groupId>org.apache.maven.plugins</groupId> 
            <artifactId>maven-failsafe-plugin</artifactId> 
            <configuration> 
             <argLine>${jacoco.agent.it.argLine} ${failsafe.jvm.args}</argLine> 
            </configuration> 
           </plugin> 
          </plugins> 
         </build> 
        </profile> 
    

    原則は同じです。正しい位相でジャココエージェントをセットアップし、テストを実行します。ジャココエージェントが正しくセットアップされていないか、argLineがビルド中に何か起こっていることと競合していると思います。

    +0

    病気は今日後でこれを見てください。もしそれが気になるならば、それは簡単に修正できると思います。 – Thadir

    関連する問題