私は、実装された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カバレッジを報告します。
まあ、この時点でもう何を試していいのか分かりません。
私の状況でカバレッジレポートを正しく生成する方法を知っている人はいますか?
ありがとうございます!
ありがとうございます。私は、クラスがexecファイルをインポートする際にインストゥルメントされていないことを確認しました。私はMavenでレポートを生成するために私のexecファイルを使用しようとしましたが、正しく動作させるためには間違ったことをしているに違いありません。あなたはそれがmavenを通して行われているという例を持っていますか?たぶん私は間違ったコマンドを探しています... – PAULUS
レポートを生成するモジュールに 'mvn jacoco:report -Djacoco.dataFile =/stage/live_integration_jacoco.exec'を実行してください。 – Godin
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