カバー率の Maven 設定

MUnit 2.x 以降、カバー率レポートのゴールは Maven のレポートセクションと統合されています。カバー率レポートは、​coverage-report​ ゴール中の Maven の ​site​ ライフサイクル中に生成されます。

次の設定は、Maven プラグインを使用して MUnit テストを実行する場合のみ適用されます。Studio からテストを実行する場合は適用されません。
Studio でカバー率レポートを実行するには、​「Studio でのカバー率の使用」​を参照してください。

MUnit カバー率 - サンプル Maven 設定
<plugin>
    <groupId>com.mulesoft.munit.tools</groupId>
    <artifactId>munit-maven-plugin</artifactId>
    <version>${munit.version}</version>

    <executions>
        <execution>
            <id>test</id>
            <phase>test</phase>
            <goals>
                <goal>test</goal>
                <goal>coverage-report</goal>
            </goals>
        </execution>
    </executions>

    <configuration>
        <coverage>
            <runCoverage>true</runCoverage>
            <failBuild>false</failBuild>

            <requiredApplicationCoverage>75</requiredApplicationCoverage>
            <requiredResourceCoverage>50</requiredResourceCoverage>
            <requiredFlowCoverage>50</requiredFlowCoverage>

            <formats>
                <format>console</format>
                <format>html</format>
            </formats>
        </coverage>
    </configuration>
</plugin>

カバー率レポートタイプ

MUnit カバー率を有効にすると、コンソールにサマリーレポートが表示されます。デフォルトでは、他のアクションは実行されません。

===============================================================================
MUnit Coverage Summary
===============================================================================
 * Resources: 2 - Flows: 3 - Processors: 4
 * Application Coverage: 75.00%
====================================================================================

MUnit カバー率には 4 つのレポートタイプがあります。

  • コンソールレポート
    コンソールレポートはコンソールに出力されます。サマリーレポートと連携して、すべてのリソース、フロー、プロセッサーの数、および全体のアプリケーションカバー率レベル、警告とエラー (存在する場合) を含む、MUnit 実行の概要が表示されます。

  • HTML レポート
    HTML レポートにはコンソールレポートと同じ情報が表示されますが、Web ブラウザーに合わせて書式設定されます。このレポートは、​${application.path}/target/site/munit/coverage/​ にあります。+

  • JSON レポート JSON レポートには、HTML レポートと同じ情報が表示されますが、形式は JSON です。このレポートは、​${application.path}/target/site/munit/coverage/munit-coverage.json​ にあります。+

  • SONAR レポートには、SonarQube レポートと同じ情報が JSON 形式で表示されます。

レポート生成を有効にするには、次の設定を追加します。

MUnit カバー率 - レポート設定
<coverage>
    <runCoverage>true</runCoverage>

    <formats>
        <format>console</format> (1)
        <format>html</format>    (2)
        <format>json</format>    (3)
        <format>sonar</format>   (4)
    </formats>
</coverage>
1 コンソールレポート
2 HTML レポート
3 JSON レポート
4 SONAR レポート

設定に追加できるレポートタイプは、none (なし)、one (1 つ)、または all (すべて) です。

たとえば、JSON レポートの生成を設定するには、​pom.xml​ ファイルに次の設定を追加する必要があります。

<coverage>
    <runCoverage>true</runCoverage>

    <formats>
        <format>json</format>
    </formats>
</coverage>

最小カバー率レベルのセットアップ

MUnit カバー率の機能の 1 つは、特定のカバー率レベルに到達しない場合にビルドを失敗させることです。

MUnit カバー率は 3 つの異なるレベルを処理します。

  • アプリケーション​: すべてのアプリケーションの全体的なカバー率。

  • リソース​: 個々の Mule 設定ファイルのカバー率レベル。

  • フロー​: 各フローのイベントプロセッサーのカバー率。

必要なカバー率レベルを定義する方法は、次のとおりです。

MUnit カバー率 - 必要なカバー率
<coverage>
    <runCoverage>true</runCoverage>
    <failBuild>true</failBuild>

    <requiredApplicationCoverage>75</requiredApplicationCoverage> (1)
    <requiredResourceCoverage>50</requiredResourceCoverage>
    <requiredFlowCoverage>50</requiredFlowCoverage>
</coverage>
1 各値はパーセントを表します。
パーセントが定義されていない場合はデフォルトで ​-1​ が設定され、そのレベルの要件が定義されていないことを示し、カバー率が低いためにビルドは失敗しません。

カバー率レベルを定義してプロパティ ​failBuild​ を ​false​ に設定し、レベルに到達していない場合、MUnit カバー率サマリーに警告が表示されます。

===============================================================================
MUnit Coverage Summary
===============================================================================
 * Resources: 2 - Flows: 3 - Processors: 4
 * Application Coverage: 75.00%

----------------------------- WARNING --------------------------------------
 * Flow: file2.xml -> file2Flow1 coverage is below defined limit. Required: 50.0% - Current: 00.00% (1)
====================================================================================
1 どのカバー率レベルが満たされていないか、カバー率レベルがどこで発生したかの詳細が示された警告。

フローまたはファイルの無視

もう 1 つの機能は、フローまたはファイルを無視する機能です。これにより、無視されたリソースには次が適用されます。

  • カバー率データに含まれない。

  • メッセージプロセッサーの総数には影響しない。

  • フローがテストされていない場合、またはフローがカバー率メトリクスに到達していない場合でも、ビルドは失敗しない。

フローおよびファイルを無視する方法

MUnit カバー率 - フローとファイルの両方を無視
<coverage>
    <runCoverage>true</runCoverage>
    <failBuild>true</failBuild>

    <requiredApplicationCoverage>100</requiredApplicationCoverage>
    <requiredResourceCoverage>100</requiredResourceCoverage>
    <requiredFlowCoverage>100</requiredFlowCoverage>

    <ignoreFlows>
        <ignoreFlow>flow-1</ignoreFlow>
        <ignoreFlow>flow-2</ignoreFlow>
        ...
        <ignoreFlow>flow-n</ignoreFlow>
    </ignoreFlows>

    <ignoreFiles>
        <ignoreFile>mule-config-1.xml</ignoreFile>
        <ignoreFile>mule-config-2.xml</ignoreFile>
        ...
        <ignoreFile>mule-config-n.xml</ignoreFile>
    </ignoreFiles>
</coverage>