コードカバレッジのために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(ソナー)を設定できますか?
は、統合テストがimplemenationによって分離されている理由はありますか? Mavenパターンの 'src/main/java'を実動コードに、' src/it/test'を同じモジュールの統合テストに従えば、ビルド設定はより簡単になります。 –