Maven でのカバー率について

MUnit 2.x 以降、カバー率レポートのゴールは Maven のレポートセクションと適切に統合されています。

<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>

カバー率レポートは、Maven のサイトライフサイクル中に生成されます。
MUnit 2.x 以降、カバー率レポートの生成は「coverage-report」ゴール中に個別に実行されます。

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 つのレポートタイプがあります。

  • コンソール

  • HTML

  • JSON

コンソール​レポートはコンソールに出力されます。サマリーレポートと連携して、各リソース、フロー、サブフロー、およびバッチの詳細とそのカバー率レベルが表示されます。

HTML​ レポートには同じ情報が表示され、どの Web ブラウザでも表示できます。 ​HTML​ レポートにアクセスするには、アプリケーションフォルダ構造を参照します。

  • ${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 つの異なるレベルを処理します。

  • アプリケーション

  • リソース

  • フロー

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

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

  <requiredApplicationCoverage>20</requiredApplicationCoverage>
  <requiredResourceCoverage>10</requiredResourceCoverage>
  <requiredFlowCoverage>5</requiredFlowCoverage>
</coverage>
各値はパーセントを表します。

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

次のようになります。

[INFO] ===============================================================================
[INFO] MUnit Coverage Summary
[INFO] ===============================================================================
[INFO]  * Resources: 1 - Flows: 1 - Processors: 2
[INFO]  * Application Coverage: 00.00%
[NOTE]
[WARNING] ----------------------------- WARNING --------------------------------------
[WARNING]  * Application coverage is below defined limit. Required: 50.0% - Current: 00.00% (1)
[INFO] ====================================================================================
1 どのカバー率レベルが満たされていないかの詳細が示された警告
レベルが定義されていない場合は -1 とみなされ、カバー率が低いためにビルドは失敗しないことを示します。

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

  • カバー率データとしてカウントされない。

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

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

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub