web-dev-qa-db-ja.com

マルチモジュールプロジェクト用のMaven Jacoco設定

私が取り組んでいるマルチモジュールプロジェクトの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レポートをプロジェクトルートで生成することは可能ですか?

個々のモジュールレポートをマージする最良の方法を提案してください。

9
John

もちろんです!

このパターンを完成させるためにしばらくといくつかの情報源を要しましたが、うまくいきました。

マルチモジュール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の単体テストがあります。 私の詳細な回答はこちら をご覧ください。

9
markdsievers

Markdsieversの詳細な回答で提案されている手順に加えて、localhost:9000にsonarqube-5.3(jdk 7+をサポート)をセットアップする必要がありました

セットアップSonarQube

そして、mvn packageを使用してjacoco.execファイルを生成します。次にmvn sonar:sonarを使用して、ソナーダッシュボードにレポートを生成します。

1
John