Maven でのカバー率の使用

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

<plugin>
    <groupId>com.mulesoft.munit.tools</groupId>
    <artifactId>munit-maven-plugin</artifactId>
    <version>${project.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>0</requiredApplicationCoverage>
            <requiredResourceCoverage>0</requiredResourceCoverage>
            <requiredFlowCoverage>0</requiredFlowCoverage>
            <formats>
                <format>console</format>
                <format>html</format>
            </formats>
        </coverage>
    </configuration>
</plugin>

カバー率レポートタイプ

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

[INFO] ===============================================================================
[INFO] 				MUnit Coverage Report
[INFO] ===============================================================================
[NOTE]
[INFO] -------------------------------------------------------------------------------
[INFO] Resource File: mule-app.xml - Flows: 1 - Weight: 100.00 -  Coverage: 100.00%
[INFO] -------------------------------------------------------------------------------
[INFO]   * Flow: muleFlow - Covered (MP): 2 - Total (MP): 2 - Coverage: 100.00%
[NOTE]
[INFO] ===============================================================================
[INFO] 					Summary
[INFO] ===============================================================================
[INFO]   * CMPs: 2
[INFO]   * MPs: 2
[INFO]   * Flows: 1
[INFO]   * Resources: 1
[INFO] ===============================================================================
[INFO] 				** Application Coverage: 100.00% **
[INFO] ===============================================================================
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 27.462 s
[INFO] Finished at: yyyy-mm-ddThh:mm:ss
[INFO] Final Memory: 20M/379M
[INFO] ------------------------------------------------------------------------

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

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

  • HTML​ レポートには同じ情報が表示されますが、Web ブラウザーに合わせて書式設定されます。
    レポートにアクセスするには、​${application.path}/target/site/munit/coverage/​ パスに対するアプリケーションフォルダー構造を参照し、​summary.html​ ファイルを探します。これはレポートの開始点であり、すべてのデータ間を移動できます。

  • JSON​ レポートには、HTML レポートと同じ情報が JSON 形式で表示されます。
    JSON レポートにアクセスするには、アプリケーションフォルダー構造内の ​${application.path}/target/site/munit/coverage/munit-coverage.json​ ファイルを探します。

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

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

  <formats>
    <format>console</format>  (1)
    <format>html</format>     (2)
    <format>json</format>     (3)
  </formats>
</coverage>
1 コンソールレポート
2 HTML レポート
3 JSON レポート
設定に追加できるレポートタイプは、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>