私が取り組んでいるマルチモジュールプロジェクトのmavenでjacocoプラグインを使用してコードカバレッジレポートを生成しようとしていました。
ビルドタグ内の親pom.xmlに以下を追加しました。
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.8-SNAPSHOT</version>
<configuration>
<output>file</output>
<append>true</append>
</configuration>
<executions>
<execution>
<id>jacoco-initialize</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-site</id>
<phase>verify</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<argLine>${argLine}</argLine>
</configuration>
</plugin>
mvn verifyを実行すると、それぞれのjacocoレポートが"project-root\module\target\site\jacoco \"の各モジュールに対して生成されました
各モジュールのテストカバレッジの詳細を含む統合されたjacocoレポートをプロジェクトルートで生成することは可能ですか?
個々のモジュールレポートをマージする最良の方法を提案してください。
もちろんです!
このパターンを完成させるためにしばらくといくつかの情報源を要しましたが、うまくいきました。
マルチモジュールMavenプロジェクトの場合:
ROOT
|--LIB-1
|--LIB-2
LIB
プロジェクトには、それぞれ独自の単体テストがあります。
ROOT pom.xml
<!- properties-->
<jacoco.reportPath>${project.basedir}/../target/jacoco.exec</jacoco.reportPath>
<!-- build/plugins (not build/pluginManagement/plugins!) -->
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.6.201602180812</version>
<executions>
<execution>
<id>agent-for-ut</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<append>true</append>
<destFile>${jacoco.reportPath}</destFile>
</configuration>
</execution>
</executions>
</plugin>
LIB
プロジェクトpom.xml
はJaCoCoプラグインの実行を継承するため、Surefireプラグインのarglineを接続するだけです。
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<argLine>${argLine}</argLine>
</configuration>
</plugin>
統合テストをロールアップするための拡張回答と、Sonarを介して報告されるJaCoCoの単体テストがあります。 私の詳細な回答はこちら をご覧ください。
Markdsieversの詳細な回答で提案されている手順に加えて、localhost:9000にsonarqube-5.3(jdk 7+をサポート)をセットアップする必要がありました
そして、mvn packageを使用してjacoco.execファイルを生成します。次にmvn sonar:sonarを使用して、ソナーダッシュボードにレポートを生成します。