2016-11-08 12 views
0

私は、実装されたEARとjacococagent.jarを使用してJBossサーバーでJaCoCoのオフラインコードカバレッジを実装しようとしていますが、JBossに対して実行されている外部統合テストのコードカバレッジを追跡しています。私はこのようなガイドを追っているJaCoCoオフライン計測器と統合テストカバレッジレポート

http://www.eclemma.org/jacoco/trunk/doc/offline.html

http://automationrhapsody.com/code-coverage-with-jacoco-offline-instrumentation-with-maven/

私はすべてが私がアップでカバレッジレポートをロードするとき、しかし、動作しているようだと、私はかなり近いよ感じますeclipseのEclEmmaプラグインは、すべてが0カバレッジとして報告されています(私は間違っていると知っています)。ここで

は私の設定です:ここで

は、コンフィギュレーションプラグインMavenの:私はJaCoCoエージェントJARの権利をバンドルしています

destfile=/stage/live_integration_jacoco.exec 
output=file 
dumponexit=true 
append=true 

   <plugin> 
       <groupId>org.jacoco</groupId> 
       <artifactId>jacoco-maven-plugin</artifactId> 
       <version>${jacoco.version}</version> 
       <configuration> 
        <!-- <destFile>${sonar.jacoco.reportPath}</destFile> --> 
        <append>true</append> 

        <excludes> 
         <exclude>**/dao/**/*Dao*</exclude> 
         <exclude>**/dao/**/*DAO*</exclude> 
         <exclude>**/dao/**/*Vo*</exclude> 
         <exclude>**/dao/**/*VO*</exclude> 
         <exclude>**/ui/**/*</exclude> 
         <exclude>**/*Vo.*</exclude> 
         <exclude>**/*VO.*</exclude> 
         <exclude>**/test/**/*</exclude> 
         <exclude>**/tester/**/*</exclude> 
        </excludes> 

       </configuration> 
       <executions> 
        <execution> 
         <id>pre-unit-test</id> 
         <goals> 
          <goal>prepare-agent</goal> 
         </goals> 
         <configuration> 
          <destFile>${sonar.jacoco.reportPath}</destFile> 
         </configuration> 
        </execution> 
        <execution> 
         <id>unit-test-report</id> 
         <phase>test</phase> 
         <goals> 
          <goal>report</goal> 
         </goals> 
         <configuration> 
          <dataFile>${sonar.jacoco.reportPath}</dataFile> 
         </configuration> 
        </execution> 
        <execution> 
         <id>jacoco-instrument</id> 
         <phase>test</phase> 
         <goals> 
          <goal>instrument</goal> 
         </goals> 
         <configuration> 
          <skip>${jacoco.skip.instrument}</skip> 
          <!-- <skip>false</skip> --> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

は、ここに私のjacoco-agent.propertiesファイルですこれらの依存関係としてEAR内に格納されます(2番目のものは、jacocoagent.jarがリポジトリのラベルと同じものです)。

 <dependency> 
      <groupId>org.jacoco</groupId> 
      <artifactId>org.jacoco.agent</artifactId> 
      <version>${jacoco.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.jacoco.build</groupId> 
      <artifactId>org.jacoco.jacocoagent</artifactId> 
      <version>${jacoco.version}</version> 
     </dependency> 

は、ここに私のプロセスです:

私はプロジェクトでこれを実行します。mvn clean install -U -Djacoco.skip.instrument=false

そして、それは私のインストルメントEAR成果物を生成します。私はそこにあるクラスがJaCoCoのいくつかを逆コンパイルすることによって実際に装備されていることを確認しました。

コードを実装したEAR、それに含まれるjacococagent.jar、およびjacoco-agent.popretiesファイルも含めて、JBossにデプロイします。 JBossはうまく始まります(jacocoagent.jarを直接バンドルする前に、ClassNotFound例外を取得するために使用されていました)。

「/ stage/live_integration_jacoco.exec」ファイルは、この時点でサイズが「0」で作成されます。

私はいくつかのテストをサーバー上で実行し、いくつかの手動テストでも実行してから、アプリケーションを停止します。

"/stage/live_integration_jacoco.exec"ファイルにはデータが保存されています(これまでのところ、30-60kbのデータが表示されています)。

私はexecファイルをeclipseにインポートしますが、エラーなしでロードしてプロジェクト内のクラスを表示しますが、すべてに0カバレッジを報告します。

まあ、この時点でもう何を試していいのか分かりません。

私の状況でカバレッジレポートを正しく生成する方法を知っている人はいますか?

ありがとうございます!

答えて

0

サーバーにデプロイされたクラスはOracle Javaコンパイラでコンパイルされていると考えられますが、EclipseのクラスはEclipse Javaコンパイラでコンパイルされているため、JaCoCoはそれらが異なるため、関連付けることはできません。これを確認するには、importしようとしたexecファイルを使用してレポートを生成してみてください。ただし、AntまたはMavenを使用してEclipseの外にあります。また、元の(計装されていない)クラスのレポートの生成を実行することを忘れないでください。それ以外の場合は一致しません。

+0

ありがとうございます。私は、クラスがexecファイルをインポートする際にインストゥルメントされていないことを確認しました。私はMavenでレポートを生成するために私のexecファイルを使用しようとしましたが、正しく動作させるためには間違ったことをしているに違いありません。あなたはそれがmavenを通して行われているという例を持っていますか?たぶん私は間違ったコマンドを探しています... – PAULUS

+0

レポートを生成するモジュールに 'mvn jacoco:report -Djacoco.dataFile =/stage/live_integration_jacoco.exec'を実行してください。 – Godin

+0

OK、私はmvn jacoco:reportを使っていますが、私はそれを私のために働かせることはできません。たとえば、 'mvn jacoco:report -Djacoco.dataFile =" C:¥development¥live_integration_jacoco.exec "-DoutputDirectory =" C:\ development \ JaCoCo-Output "を実行します。 --- 017.201606060606:report(default-cli)@ module-name --- [情報]実行データファイルがないためにJaCoCoの実行をスキップします。 ' – PAULUS

関連する問題