2017-05-11 3 views
1

コードカバレッジのためにSonarQubeとJacocoでプロジェクトを設定しました。 1つのこと以外はすべてうまくいく。私は多くのmavenのサブモジュールでプロジェクトを分割:別のモジュールでの統合テストのためのSonarとmavenのJacocoコードカバレッジ

mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent -Dmaven.compiler.debug=true install sonar:sonar 

問題はJacocoは簡単に私の場合にはそう(同じモジュール内のユニットテストカバレッジをサポートすることができるということです。

project (pom.xml) - 
|-moduleA (no pom here) 
| |- it (pom.xml) - integration tests for "impl" module 
| |- impl (pom.xml) - implementaion + Unit tests 
|-moduelB 
| |- it (pom.xml) - integration tests for "impl" module 
| |- impl (pom.xml) - implementaion + Unit tests 
|-moduleC ... 

私は、次のコマンドを使用して構築を開始しますユニットテストはimplモジュール内にありますが、実装クラスが含まれていないitモジュールからカバレッジを分析することはできません。 implモジュールの統合テストが含まれているだけです。それがなぜ機能しないのかは明らかです。私はこのようなmoduleA /それ/のpom.xml内sonar.java.binariesプロパティを定義した後

No JaCoCo analysis of project coverage can be done since there is no class files. 

:私はJacocoログでこのような情報を取得していますit

<properties> 
     <sonar.java.binaries>../impl/target/classes</sonar.java.binaries> 
    </properties> 

カバレッジ解析はまだ失敗しますが、私はD:\project\moduleA\it\target\jacoco.execファイルが存在することを言及する必要があります

[INFO] Analysing D:\project\moduleA\it\target\jacoco.exec 
[WARNING] Coverage information was not collected. Perhaps you forget to include debug information into compiled classes? 

:Jacocoのメッセージがへの変更をログに記録します。また、D:\project\moduleA\impl\target\classesのコンパイルされたクラスにデバッグデータ(すべての行、変数、ソース)が含まれていることを確認しました。

私はsonar.java.binariesの中で別のパスを試していましたが、結果は常に同じです。私が試した:

../impl/target/classes 
../../impl/target/classes 
../../../impl/target/classes 
../impl/target 
... 

を、私はそれがjacoco.execファイルに関連するさまざまなMavenのサブモジュール内のクラスのバイナリを見つけることができるようにJacoco(ソナー)を設定できますか?

+0

は、統合テストがimplemenationによって分離されている理由はありますか? Mavenパターンの 'src/main/java'を実動コードに、' src/it/test'を同じ​​モジュールの統合テストに従えば、ビルド設定はより簡単になります。 –

答えて

0

どのようにjacoco.execファイルの場所を指定しましたか?これは、binファイルのパス開始点が何であるかの手がかりを与えるはずです。 sonar.java.binariesとして

私は両方sonar.binariesを使用しています

(実行sonar6.2)

+0

私はどこにでもデフォルトのパスを使います。私が定義したのは 'sonar.java.binaries'パスだけです。私が追加した後、統合テストモジュールのJacoco.execが可視になりました(少なくともログで報告されました)。 – mombip

関連する問題