# mulesoft Munit - Full Documentation # API 仕様からの MUnit テストのテンプレートのスキャフォールディング APIKit を使用して、API 仕様に基づく MUnit テストスイートの空の構造を自動的に生成できます。 Mule プロジェクトは APIKit を使用して生成されるため、APIKit を使用して、API 仕様に記述されているエンドポイントに基づいて、空の MUnit テストスイートのスキャフォールディングを自動的に行うことができます。スキャフォールディングではテスト自体は生成されませんが、テストの記述を開始するのに役立つツールが生成されます。 この空のテストスイートを作成する手順は、次のとおりです。 1. プロジェクトで APIKit ルーターを見つけて右クリックします。 2. **\[Create Test Suite for Project From API Specification (API 仕様からプロジェクトのテストスイートを作成)\]**​ を選択します。 # API 仕様からの MUnit テストのテンプレートのスキャフォールディング APIKit を使用して、API 仕様に基づく MUnit テストスイートの空の構造を自動的に生成できます。 Mule プロジェクトは APIKit を使用して生成されるため、APIKit を使用して、API 仕様に記述されているエンドポイントに基づいて、空の MUnit テストスイートのスキャフォールディングを自動的に行うことができます。スキャフォールディングではテスト自体は生成されませんが、テストの記述を開始するのに役立つツールが生成されます。 この空のテストスイートを作成する手順は、次のとおりです。 1. プロジェクトで APIKit ルーターを見つけて右クリックします。 2. **\[Create Test Suite for Project From API Specification (API 仕様からプロジェクトのテストスイートを作成)\]**​ を選択します。 # Assert Equals Assert Equals プロセッサーでは、Mule イベントのコンテンツの状態を検証するためにアサーションを実行できます。このプロセッサーは、本番コードの実行後に Mule イベントを検証するために使用できます。 たとえば、ペイロードが特定の値と等しいことをアサートするため、次の方法で Assert-Equals プロセッサーを設定できます。 ```xml ``` `expected`​ 属性が String (文字列) の場合、式を使用せずにリテラル値を指定できます。 ```xml ``` このアサーションが失敗すると、プロセッサーは ​`java.lang.AssertionError`​ をスローします。 # Assert Equals Assert Equals プロセッサーでは、Mule イベントのコンテンツの状態を検証するためにアサーションを実行できます。このプロセッサーは、本番コードの実行後に Mule イベントを検証するために使用できます。 たとえば、ペイロードが特定の値と等しいことをアサートするため、次の方法で Assert-Equals プロセッサーを設定できます。 ```xml ``` `expected`​ 属性が String (文字列) の場合、式を使用せずにリテラル値を指定できます。 ```xml ``` このアサーションが失敗すると、プロセッサーは ​`java.lang.AssertionError`​ をスローします。 # Assert Expression Assert Expression プロセッサーでは、Mule イベントのコンテンツの状態をアサートする Dataweave 式を評価できます。このプロセッサーは、​[DataWeave アサーションライブラリ](https://docs.mulesoft.com/jp/munit/2.3/dataweave-assertions-library)​を使用して、本番コードの実行後に Mule イベントを検証するために使用できます。 たとえば、ペイロードが特定の値と等しいことをアサートするため、equalTo() マッチャーを使用して Assert-Expression プロセッサーを設定できます。 ```xml #[ import * from dw::test::Asserts --- payload must equalTo('example') ] ``` ## [](#複雑なアサーションの実行)複雑なアサーションの実行 DW アサーションライブラリを使用すると、Mule イベントのコンテンツの状態をより深くアサートできます。 ```xml #[ import * from dw::test::Asserts --- vars.attributes must [beObject(), $.statusCode must equalTo(200), $.method must equalTo('GET')] ] ``` ## [](#独自のマッチャーの作成)独自のマッチャーの作成 独自のマッチャーを作成するには、​`src/test/resources`​ フォルダーに DW ファイルを追加します。たとえば、次のコンテンツを含む ​`MyMatcher.dwl`​ というファイルを追加します。 ```dataweave import * from dw::test::Asserts fun beEven(): Matcher = (actual:Number) -> do { var matchesEven = (actual mod 2) == 0 --- { matches: matchesEven, description: {expected: " to be an even number.", actual: write(actual) as String} } } ``` 次に、Assert-Expression プロセッサー内でそれを使用します。 ```xml #[ import * from dw::test::Asserts --- payload must MyMatcher::beEven() ] ``` このアサーションが失敗すると、プロセッサーは ​`java.lang.AssertionError`​ をスローします。

dw::test::Asserts​ ライブラリのマッチャーは、​MunitTools​ マッチャーとは互換性がありません。Assert-That プロセッサーで ​dw::test::Asserts​ は使用できず、Assert-Expression プロセッサーで ​MunitTools​ マッチャーは使用できません。

# Assert Expression Assert Expression プロセッサーでは、Mule イベントのコンテンツの状態をアサートする Dataweave 式を評価できます。このプロセッサーは、​[DataWeave アサーションライブラリ](https://docs.mulesoft.com/jp/munit/3.0/dataweave-assertions-library)​を使用して、本番コードの実行後に Mule イベントを検証するために使用できます。 たとえば、ペイロードが特定の値と等しいことをアサートするため、equalTo() マッチャーを使用して Assert-Expression プロセッサーを設定できます。 ```xml #[ import * from dw::test::Asserts --- payload must equalTo('example') ] ``` ## [](#複雑なアサーションの実行)複雑なアサーションの実行 DW アサーションライブラリを使用すると、Mule イベントのコンテンツの状態をより深くアサートできます。 ```xml #[ import * from dw::test::Asserts --- vars.attributes must [beObject(), $.statusCode must equalTo(200), $.method must equalTo('GET')] ] ``` ## [](#独自のマッチャーの作成)独自のマッチャーの作成 独自のマッチャーを作成するには、​`src/test/resources`​ フォルダーに DW ファイルを追加します。たとえば、次のコンテンツを含む ​`MyMatcher.dwl`​ というファイルを追加します。 ```dataweave import * from dw::test::Asserts fun beEven(): Matcher = (actual:Number) -> do { var matchesEven = (actual mod 2) == 0 --- { matches: matchesEven, description: {expected: " to be an even number.", actual: write(actual) as String} } } ``` 次に、Assert-Expression プロセッサー内でそれを使用します。 ```xml #[ import * from dw::test::Asserts --- payload must MyMatcher::beEven() ] ``` このアサーションが失敗すると、プロセッサーは ​`java.lang.AssertionError`​ をスローします。

dw::test::Asserts​ ライブラリのマッチャーは、​MunitTools​ マッチャーとは互換性がありません。Assert-That プロセッサーで ​dw::test::Asserts​ は使用できず、Assert-Expression プロセッサーで ​MunitTools​ マッチャーは使用できません。

# Assert That イベントプロセッサー Assert That イベントプロセッサーでは、Mule イベントのコンテンツの状態を検証するためにアサーションを実行できます。Assert That プロセッサーを使用して、本番コードの実行後に Mule イベントを検証できます。 Assert That プロセッサーは、​`MUnit matchers`​ という一連の DataWeave 機能を使用して、式の任意の値のアサーション条件を定義します。 たとえば、ペイロードが特定の値と等しいことをアサートするため、​`equalTo()`​ マッチャーを使用して AssertThat プロセッサーを設定します。 ```xml ``` または、​`nullValue()`​ マッチャーを使用してペイロードが null かどうかを確認することもできます。 ```xml ``` 詳細は​[「MUnit マッチャー」](https://docs.mulesoft.com/jp/munit/2.3/munit-matchers)​を参照してください。 これらのアサーションが失敗すると、プロセッサーは ​`java.lang.AssertionError`​ をスローします。 ## [](#関連情報)関連情報 - [MUnit マッチャー](https://docs.mulesoft.com/jp/munit/2.3/munit-matchers) # Assert That イベントプロセッサー Assert That イベントプロセッサーでは、Mule イベントのコンテンツの状態を検証するためにアサーションを実行できます。Assert That プロセッサーを使用して、本番コードの実行後に Mule イベントを検証できます。 Assert That プロセッサーは、​`MUnit matchers`​ という一連の DataWeave 機能を使用して、式の任意の値のアサーション条件を定義します。 たとえば、ペイロードが特定の値と等しいことをアサートするため、​`equalTo()`​ マッチャーを使用して AssertThat プロセッサーを設定します。 ```xml ``` または、​`nullValue()`​ マッチャーを使用してペイロードが null かどうかを確認することもできます。 ```xml ``` 詳細は​[「MUnit マッチャー」](https://docs.mulesoft.com/jp/munit/3.0/munit-matchers)​を参照してください。 これらのアサーションが失敗すると、プロセッサーは ​`java.lang.AssertionError`​ をスローします。 ## [](#関連情報)関連情報 - [MUnit マッチャー](https://docs.mulesoft.com/jp/munit/3.0/munit-matchers) # Before および After スコープ ## [](#before-suite-scope)Before Suite スコープ MUnit Before Suite には、スイート全体の前に実行されることを意図したコードが含まれます。 Before Suite には 1 つの実行ルールがあり、すべてのテストの前に 1 回のみ実行されます。 たとえば、4 つのテストを含む MUnit テストスイートファイルがあるとします。MUnit Before Suite 内のコードは、4 つのテストの前に 1 回のみ実行されます。
MUnit テストスイートごとに使用できる Before Suite スコープは 1 つのみです。
Before Suite の例 ```xml ``` `before-suite`​ は MUnit テストの外側にあります。MUnit Before Suite が役立つ 1 つの例は、すべてのテストを実行する前にテスト環境をセットアップする必要がある場合です。 Anypoint Studio キャンバスに before-suite を配置すると、スコープは MUnit テストの外側に配置されます。 ## [](#after-suite-scope)After Suite スコープ MUnit After Suite はスコープです。スイート全体の後に実行されることを意図したコードを含めることができます。After Suite には 1 つの実行ルールがあり、すべてのテストの後に 1 回のみ実行されます。 たとえば、4 つのテストを含む MUnit テストスイートファイルがあるとします。MUnit After Suite 内のコードは、すべてのテストの後に 1 回のみ実行されます。
MUnit テストスイートごとに使用できる After Suite スコープは 1 つのみです。
After Suite の例 ```xml ``` after-suite は MUnit テストの外側にあります。MUnit After Suite が役立つ 1 つの例は、テスト全体を実行した後にテスト環境を削除する必要がある場合です。 Anypoint Studio キャンバスに after-suite を配置すると、スコープは MUnit テストの外側に配置されます。 ## [](#before-test-scope)Before Test スコープ MUnit Before Test スコープには、各テストの前に実行されることを意図したコードが含まれます。各 Before Test スコープは同じ実行ルールに従い、各テストの前に実行されます。 たとえば、4 つのテストを含む MUnit テストスイートファイルがあるとします。MUnit Before Test 内のコードは、4 つのテストそれぞれの前に実行され、4 回実行されます。
MUnit テストスイートごとに使用できる Before Test スコープは 1 つのみです。
Before Test の例 ```xml ``` `before.test`​ は MUnit テストの外側にあります。MUnit Before Test が役立つ 1 つの例は、各テストを実行する前に、各テストでファイルを作成したり、コンシュームされる変数を設定したりするなどのテスト環境をセットアップする必要がある場合です。 Anypoint Studio キャンバスに before-test を配置すると、スコープは MUnit テストの外側に配置されます。 ## [](#after-test-scope)After Test スコープ MUnit After Test スコープには、各テストの後に実行されることを意図したコードが含まれます。各 After Test スコープは同じ実行ルールに従い、各テストの後に実行されます。 たとえば、4 つのテストを含む MUnit テストスイートファイルがあるとします。MUnit After Test 内のコードは、4 つのテストそれぞれの後に実行され、4 回実行されます。
MUnit テストスイートごとに使用できる After Test スコープは 1 つのみです。
After Test の例 ```xml ``` `after.test`​ は MUnit テストの外側にあります。MUnit After Test が役立つ 1 つの例は、テスト全体を実行した後にテスト環境を削除する必要がある場合です。 Anypoint Studio キャンバスに after-test を配置すると、スコープは MUnit テストの外側に配置されます。 ## [](#before-suite-リファレンス)Before Suite リファレンス
属性名 説明

name

Before Suite の名前を定義します。この名前は、スイート内で一意である必要があります。

description

実行されるアクションを説明します。

## [](#after-suite-リファレンス)After Suite リファレンス
属性名 説明

name

After Suite の名前を定義します。この名前は、スイート内で一意である必要があります。

description

実行されるアクションを説明します。

## [](#before-test-リファレンス)Before Test リファレンス
属性名 説明

name

Before Test の名前を定義します。この名前は、スイート内で一意である必要があります。

description

実行されるアクションを説明します。

## [](#after-test-リファレンス)After Test リファレンス
属性名 説明

name

After Test の名前を定義します。この名前は、スイート内で一意である必要があります。

description

実行されるアクションを説明します。

# Before および After スコープ ## [](#before-suite-scope)Before Suite スコープ MUnit Before Suite には、スイート全体の前に実行されることを意図したコードが含まれます。 Before Suite には 1 つの実行ルールがあり、すべてのテストの前に 1 回のみ実行されます。 たとえば、4 つのテストを含む MUnit テストスイートファイルがあるとします。MUnit Before Suite 内のコードは、4 つのテストの前に 1 回のみ実行されます。
MUnit テストスイートごとに使用できる Before Suite スコープは 1 つのみです。
Before Suite の例 ```xml ``` `before-suite`​ は MUnit テストの外側にあります。MUnit Before Suite が役立つ 1 つの例は、すべてのテストを実行する前にテスト環境をセットアップする必要がある場合です。 Anypoint Studio キャンバスに before-suite を配置すると、スコープは MUnit テストの外側に配置されます。 ## [](#after-suite-scope)After Suite スコープ MUnit After Suite はスコープです。スイート全体の後に実行されることを意図したコードを含めることができます。After Suite には 1 つの実行ルールがあり、すべてのテストの後に 1 回のみ実行されます。 たとえば、4 つのテストを含む MUnit テストスイートファイルがあるとします。MUnit After Suite 内のコードは、すべてのテストの後に 1 回のみ実行されます。
MUnit テストスイートごとに使用できる After Suite スコープは 1 つのみです。
After Suite の例 ```xml ``` after-suite は MUnit テストの外側にあります。MUnit After Suite が役立つ 1 つの例は、テスト全体を実行した後にテスト環境を削除する必要がある場合です。 Anypoint Studio キャンバスに after-suite を配置すると、スコープは MUnit テストの外側に配置されます。 ## [](#before-test-scope)Before Test スコープ MUnit Before Test スコープには、各テストの前に実行されることを意図したコードが含まれます。各 Before Test スコープは同じ実行ルールに従い、各テストの前に実行されます。 たとえば、4 つのテストを含む MUnit テストスイートファイルがあるとします。MUnit Before Test 内のコードは、4 つのテストそれぞれの前に実行され、4 回実行されます。
MUnit テストスイートごとに使用できる Before Test スコープは 1 つのみです。
Before Test の例 ```xml ``` `before.test`​ は MUnit テストの外側にあります。MUnit Before Test が役立つ 1 つの例は、各テストを実行する前に、各テストでファイルを作成したり、コンシュームされる変数を設定したりするなどのテスト環境をセットアップする必要がある場合です。 Anypoint Studio キャンバスに before-test を配置すると、スコープは MUnit テストの外側に配置されます。 ## [](#after-test-scope)After Test スコープ MUnit After Test スコープには、各テストの後に実行されることを意図したコードが含まれます。各 After Test スコープは同じ実行ルールに従い、各テストの後に実行されます。 たとえば、4 つのテストを含む MUnit テストスイートファイルがあるとします。MUnit After Test 内のコードは、4 つのテストそれぞれの後に実行され、4 回実行されます。
MUnit テストスイートごとに使用できる After Test スコープは 1 つのみです。
After Test の例 ```xml ``` `after.test`​ は MUnit テストの外側にあります。MUnit After Test が役立つ 1 つの例は、テスト全体を実行した後にテスト環境を削除する必要がある場合です。 Anypoint Studio キャンバスに after-test を配置すると、スコープは MUnit テストの外側に配置されます。 ## [](#before-suite-リファレンス)Before Suite リファレンス
属性名 説明

name

Before Suite の名前を定義します。この名前は、スイート内で一意である必要があります。

description

実行されるアクションを説明します。

## [](#after-suite-リファレンス)After Suite リファレンス
属性名 説明

name

After Suite の名前を定義します。この名前は、スイート内で一意である必要があります。

description

実行されるアクションを説明します。

## [](#before-test-リファレンス)Before Test リファレンス
属性名 説明

name

Before Test の名前を定義します。この名前は、スイート内で一意である必要があります。

description

実行されるアクションを説明します。

## [](#after-test-リファレンス)After Test リファレンス
属性名 説明

name

After Test の名前を定義します。この名前は、スイート内で一意である必要があります。

description

実行されるアクションを説明します。

# Coverage (カバー率) MUnit カバー率機能では、実行されたイベントプロセッサーの数をカウントして、一連の MUnit テストでどれぐらいの Mule アプリケーションが実行されたのかに関するメトリクスが提供されます。これにより、アプリケーションの品質基準を取得し、次のメトリクスを提供できます。 - アプリケーション全体のカバー率: 以下の項目の平均。 - リソースカバー率: src/main/mule の各 Mule 設定ファイルを参照します。 - フローカバー率: フロー、サブフロー、バッチジョブのいずれかのコンポーネントを参照します。 カバー率レポートは、EE Runtime でのみ実行されます。アプリケーションに Mule CE Runtime の ​`requiredProduct`​ がある場合、「​**Coverage is a EE only feature and you’ve selected to run over CE (カバー率は EE 専用の機能ですが、CE で実行するように選択されています)**​」というメッセージが表示されます。EE Runtime に対して実行するには、​[「ランタイム製品の指定」](https://docs.mulesoft.com/jp/munit/2.3/munit-maven-plugin#specify-runtime-product)​を参照してください。 JSON 形式のカバー率レポートのサンプルを次に示します。 以下のコードのコールアウトを使用して、レポートの各項目を理解してください。 MUnit カバー率 - サンプル JSON レポート ```json { "coverage": 75.0, (1) "requiredApplicationCoverage": 40.0, (2) "requiredResourceCoverage": 30.0, (2) "requiredFlowCoverage": 25.0, (2) "flowCount": 3, (3) "processorCount": 4, (4) "coveredProcessorCount": 3, (5) "files": [ { "name": "file1.xml", (6) "flowCount": 1, (7) "coverage": 100.0, (8) "processorCount": 2, (9) "weight": 50.0, (10) "flows": [ { "name": "file1Flow1", (11) "type": "FLOW", (12) "coverage": 100.0, (13) "messageProcessorCount": 2, (14) "coveredProcessorCount": 2, (15) "lines": [ { (16) "lineNumber": 11, "covered": true }, { "lineNumber": 12, "covered": true } ] } ] }, { "name": "file2.xml", "flowCount": 2, "coverage": 50.0, "processorCount": 2, "weight": 50.0, "flows": [ { "name": "file2Flow2", "type": "SCOPE", "coverage": 100.0, "messageProcessorCount": 1, "coveredProcessorCount": 1, "lines": [ { "lineNumber": 10, "covered": true } ] }, { "name": "file2Flow1", "type": "SCOPE", "coverage": 0.0, "messageProcessorCount": 1, "coveredProcessorCount": 0, "lines": [ { "lineNumber": 7, "covered": false } ] } ] } ] } ```
1アプリケーション全体のカバー率。
2アプリケーション、リソース、およびフローに必要なカバー率。設定しない場合、デフォルトの -1 になります。
3アプリケーションのフローの数。
4アプリケーションのイベントプロセッサーの数。
5カバーされるイベントプロセッサーの数。
6そのファイルの名前。
7そのファイルのフローの数。
8そのファイルのカバー率。
9そのファイルのイベントプロセッサーの数。
10アプリケーション全体のカバー率に対するそのファイルの貢献度。
11フローの名前。
12最上位要素の種別。
カバー率の最上位要素の他の種別は、エラーハンドラーです。
13そのフローのカバー率。
14そのフローのイベントプロセッサーの数。
15そのフローでカバーされるイベントプロセッサーの数。
16そのファイル内のイベントプロセッサーを含む XML 行番号、およびそれらがカバーされたかどうか。
## [](#関連情報)関連情報 - [Maven でのカバー率](https://docs.mulesoft.com/jp/munit/2.3/coverage-maven-concept) # Coverage (カバー率) MUnit カバー率機能では、実行されたイベントプロセッサーの数をカウントして、一連の MUnit テストでどれぐらいの Mule アプリケーションが実行されたのかに関するメトリクスが提供されます。これにより、アプリケーションの品質基準を取得し、次のメトリクスを提供できます。 - アプリケーション全体のカバー率: 以下の項目の平均。 - リソースカバー率: src/main/mule の各 Mule 設定ファイルを参照します。 - フローカバー率: フロー、サブフロー、バッチジョブのいずれかのコンポーネントを参照します。 カバー率レポートは、EE Runtime でのみ実行されます。アプリケーションに Mule CE Runtime の ​`requiredProduct`​ がある場合、「​**Coverage is a EE only feature and you’ve selected to run over CE (カバー率は EE 専用の機能ですが、CE で実行するように選択されています)**​」というメッセージが表示されます。EE Runtime に対して実行するには、​[「ランタイム製品の指定」](https://docs.mulesoft.com/jp/munit/3.0/munit-maven-plugin#specify-runtime-product)​を参照してください。 JSON 形式のカバー率レポートのサンプルを次に示します。 以下のコードのコールアウトを使用して、レポートの各項目を理解してください。 MUnit カバー率 - サンプル JSON レポート ```json { "coverage": 75.0, (1) "requiredApplicationCoverage": 40.0, (2) "requiredResourceCoverage": 30.0, (2) "requiredFlowCoverage": 25.0, (2) "flowCount": 3, (3) "processorCount": 4, (4) "coveredProcessorCount": 3, (5) "files": [ { "name": "file1.xml", (6) "flowCount": 1, (7) "coverage": 100.0, (8) "processorCount": 2, (9) "weight": 50.0, (10) "flows": [ { "name": "file1Flow1", (11) "type": "FLOW", (12) "coverage": 100.0, (13) "messageProcessorCount": 2, (14) "coveredProcessorCount": 2, (15) "lines": [ { (16) "lineNumber": 11, "covered": true }, { "lineNumber": 12, "covered": true } ] } ] }, { "name": "file2.xml", "flowCount": 2, "coverage": 50.0, "processorCount": 2, "weight": 50.0, "flows": [ { "name": "file2Flow2", "type": "SCOPE", "coverage": 100.0, "messageProcessorCount": 1, "coveredProcessorCount": 1, "lines": [ { "lineNumber": 10, "covered": true } ] }, { "name": "file2Flow1", "type": "SCOPE", "coverage": 0.0, "messageProcessorCount": 1, "coveredProcessorCount": 0, "lines": [ { "lineNumber": 7, "covered": false } ] } ] } ] } ```
1アプリケーション全体のカバー率。
2アプリケーション、リソース、およびフローに必要なカバー率。設定しない場合、デフォルトの -1 になります。
3アプリケーションのフローの数。
4アプリケーションのイベントプロセッサーの数。
5カバーされるイベントプロセッサーの数。
6そのファイルの名前。
7そのファイルのフローの数。
8そのファイルのカバー率。
9そのファイルのイベントプロセッサーの数。
10アプリケーション全体のカバー率に対するそのファイルの貢献度。
11フローの名前。
12最上位要素の種別。
カバー率の最上位要素の他の種別は、エラーハンドラーです。
13そのフローのカバー率。
14そのフローのイベントプロセッサーの数。
15そのフローでカバーされるイベントプロセッサーの数。
16そのファイル内のイベントプロセッサーを含む XML 行番号、およびそれらがカバーされたかどうか。
## [](#関連情報)関連情報 - [Maven でのカバー率](https://docs.mulesoft.com/jp/munit/3.0/coverage-maven-concept) # DataWeave アサーションライブラリ ## [](#dwtestasserts)dw::test::Asserts このモジュールには、テストで使用するコアマッチャーのセットが含まれます。 例 ```dataweave %dw 2.0 import dw::tests::Asserts --- payload must beObject() ``` ペイロードが Object (オブジェクト) 型かどうかを検証します。 ## [](#関数)関数 ### [](#anyof)anyOf #### [](#anyofarraymatcherany-matcherany)anyOf(Array>): Matcher 値が少なくとも 1 つの指定されたマッチャーを満たすことを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- "A Text" must anyOf([beObject(), beString()]) ``` ### [](#bearray)beArray #### [](#bearray-matcher)beArray(): Matcher 指定された値が Array (配列) 型であることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- [1, 4, 7] must beArray() ``` ### [](#beblank)beBlank #### [](#beblank-matcherstring-null)beBlank(): Matcher 文字列値が空白であることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- " " must beBlank() ``` ### [](#beboolean)beBoolean #### [](#beboolean-matcher)beBoolean(): Matcher 指定された値が Boolean (ブール) 型であることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- true must beBoolean() ``` ### [](#beempty)beEmpty #### [](#beempty-matcherstring-object-array-null)beEmpty(): Matcher 値 (String (文字列)、Object (オブジェクト)、または Array (配列)) が空であることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- [] must beEmpty() ``` ### [](#begreaterthan)beGreaterThan #### [](#begreaterthancomparable-boolean-matchercomparable)beGreaterThan(Comparable, Boolean): Matcher アサートされた Comparable (比較可能) 値が少なくとも 1 つの指定された値より大きいことを検証します。 _inclusive_​ 引数を使用する場合と同様に使用できます。 ```dataweave %dw 2.0 import dw::tests::Asserts --- 3 must beGreaterThan(2) ``` ### [](#belowerthan)beLowerThan #### [](#belowerthancomparable-boolean-matchercomparable)beLowerThan(Comparable, Boolean): Matcher アサートされた Comparable (比較可能) 値が指定された値より低いことを検証します。 _inclusive_​ 引数を使用する場合と同様に使用できます。 ```dataweave %dw 2.0 import dw::tests::Asserts --- 1 must beLowerThan(2) ``` ### [](#benull)beNull #### [](#benull-matcher)beNull(): Matcher 指定された値が Null 型であることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- null must beNull() ``` ### [](#benumber)beNumber #### [](#benumber-matcher)beNumber(): Matcher 指定された値が Number (数値) 型であることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- 123 must beNumber() ``` ### [](#beobject)beObject #### [](#beobject-matcher)beObject(): Matcher 指定された値が Object (オブジェクト) 型であることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- { name : "Lionel", lastName: "Messi"} must beObject() ``` ### [](#beoneof)beOneOf #### [](#beoneofarrayany-matcher)beOneOf(Array): Matcher 値が指定された Array (配列) に含まれることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- 1 must beOneOf([1, "A Text", true]) ``` ### [](#bestring)beString #### [](#bestring-matcher)beString(): Matcher 指定された値が String (文字列) 型であることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- "A Text" must beString() ``` ### [](#contain)contain #### [](#containstring-matcherstring)contain(String): Matcher アサートされた String (文字列) に指定された String (文字列) が含まれることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- "A Text" must contain("ex") ``` #### [](#containany-matcherarrayany)contain(Any): Matcher> アサートされた Array (配列) に指定された値が含まれることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- [1, "A Text", true] must contain(1) ``` ### [](#eachitem)eachItem #### [](#eachitemmatcherany-matcherarrayany)eachItem(Matcher): Matcher> 配列内の各項目が指定されたマッチャーを満たすことを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- [1,2,3] must eachItem(beNumber()) ``` ### [](#endwith)endWith #### [](#endwithstring-matcherstring)endWith(String): Matcher アサートされた String (文字列) が指定された String (文字列) で終了することを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- "A Text" must endWith("xt") ``` ### [](#equalto)equalTo #### [](#equaltoany-unordered-boolean-matcherany)equalTo(Any, { unordered?: Boolean }): Matcher 値が別の値と等しいことを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- (1 + 2) must equalTo(3) ``` ### [](#equaltoresource)equalToResource #### [](#equaltoresourcestring-string-object-matcherany)equalToResource(String, String, Object): Matcher 指定された値がリソースファイルの内容と等しいことを検証します。 リソースファイルはクラスパスに属している必要があります。 ```dataweave %dw 2.0 import dw::tests::Asserts --- { name: "Lionel", lastName: "Messi" } must equalToResource("user.json", "application/json") ``` ### [](#haveitem)haveItem #### [](#haveitemmatcherany-matcherarrayany)haveItem(Matcher): Matcher> 配列の少なくとも 1 つの項目が指定されたマッチャーを満たすことを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- [1, true, "a text"] must haveItem(beNumber()) ``` ### [](#havekey)haveKey #### [](#havekeystring-matcherobject)haveKey(String): Matcher Object (オブジェクト) に指定されたキーが含まれることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- { name: "Lionel", lastName: "Messi" } must haveKey("name") ``` ### [](#havesize)haveSize #### [](#havesizenumber-matcherarray-string-object)haveSize(Number): Matcher 配列に指定されたサイズが含まれることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- [1, 4, 7] must haveSize(3) ``` ### [](#havevalue)haveValue #### [](#havevalueany-matcherobject)haveValue(Any): Matcher Object (オブジェクト) に指定された値が含まれることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- { name: "Lionel", lastName: "Messi" } must haveValue("Messi") ``` ### [](#must)must #### [](#mustt-arrayvalue-t-matchert-matcherresult-boolean-matcherresult)must(T, Array<(value: T) → Matcher | MatcherResult | Boolean>): MatcherResult この関数では、式のマッチャーのリストを使用して値をアサートできます。 例 ```dataweave %dw 2.0 import dw::tests::Asserts --- payload must [ beObject(), $.foo is Null ] ``` #### [](#mustt-value-t-matchert-boolean-matcherresult)must(T, (value: T) → Matcher | Boolean): MatcherResult この関数では、式のマッチャーを使用して値をアサートできます。 例 ```dataweave %dw 2.0 import dw::tests::Asserts --- payload must beObject() ``` ### [](#notbe)notBe #### [](#notbematchert-matchert)notBe(Matcher): Matcher 値が指定されたマッチャーを満たさないことを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- 1 must notBe(equalTo(2)) ``` ### [](#notbenull)notBeNull #### [](#notbenull-matcher)notBeNull(): Matcher 指定された値が Null 型ではないことを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- "A Text" must notBeNull() ``` ### [](#startwith)startWith #### [](#startwithstring-matcherstring)startWith(String): Matcher アサートされた String (文字列) が指定された String (文字列) で開始することを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- "A Text" must startWith("A") ``` ## [](#変数)変数 ### [](#matched)MATCHED 成功した一致を表す定数。 ## [](#型)型 ### [](#matcher)Matcher アサーションを実行するマッチャーを表すデータ型。 例 ```dataweave %dw 2.0 import dw::tests::Asserts fun beEqualToOne(): Matcher = (actual) -> do { { matches: actual == 1, description: { expected: "To be 1", actual: write(actual) as String } } } ``` 定義 ```dataweave (value: T) -> MatcherResult ``` ### [](#matcherresult)MatcherResult アサーションの結果を表すデータ型。 例 ```dataweave { "matches": false, description : { expected : "Number type", actual: "A Text" } } ``` 定義 ```dataweave { matches: Boolean, description: { expected: String, actual: String }, reasons?: Array } ``` # DataWeave アサーションライブラリ ## [](#dwtestasserts)dw::test::Asserts このモジュールには、テストで使用するコアマッチャーのセットが含まれます。 例 ```dataweave %dw 2.0 import dw::tests::Asserts --- payload must beObject() ``` ペイロードが Object (オブジェクト) 型かどうかを検証します。 ## [](#関数)関数 ### [](#anyof)anyOf #### [](#anyofarraymatcherany-matcherany)anyOf(Array>): Matcher 値が少なくとも 1 つの指定されたマッチャーを満たすことを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- "A Text" must anyOf([beObject(), beString()]) ``` ### [](#bearray)beArray #### [](#bearray-matcher)beArray(): Matcher 指定された値が Array (配列) 型であることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- [1, 4, 7] must beArray() ``` ### [](#beblank)beBlank #### [](#beblank-matcherstring-null)beBlank(): Matcher 文字列値が空白であることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- " " must beBlank() ``` ### [](#beboolean)beBoolean #### [](#beboolean-matcher)beBoolean(): Matcher 指定された値が Boolean (ブール) 型であることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- true must beBoolean() ``` ### [](#beempty)beEmpty #### [](#beempty-matcherstring-object-array-null)beEmpty(): Matcher 値 (String (文字列)、Object (オブジェクト)、または Array (配列)) が空であることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- [] must beEmpty() ``` ### [](#begreaterthan)beGreaterThan #### [](#begreaterthancomparable-boolean-matchercomparable)beGreaterThan(Comparable, Boolean): Matcher アサートされた Comparable (比較可能) 値が少なくとも 1 つの指定された値より大きいことを検証します。 _inclusive_​ 引数を使用する場合と同様に使用できます。 ```dataweave %dw 2.0 import dw::tests::Asserts --- 3 must beGreaterThan(2) ``` ### [](#belowerthan)beLowerThan #### [](#belowerthancomparable-boolean-matchercomparable)beLowerThan(Comparable, Boolean): Matcher アサートされた Comparable (比較可能) 値が指定された値より低いことを検証します。 _inclusive_​ 引数を使用する場合と同様に使用できます。 ```dataweave %dw 2.0 import dw::tests::Asserts --- 1 must beLowerThan(2) ``` ### [](#benull)beNull #### [](#benull-matcher)beNull(): Matcher 指定された値が Null 型であることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- null must beNull() ``` ### [](#benumber)beNumber #### [](#benumber-matcher)beNumber(): Matcher 指定された値が Number (数値) 型であることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- 123 must beNumber() ``` ### [](#beobject)beObject #### [](#beobject-matcher)beObject(): Matcher 指定された値が Object (オブジェクト) 型であることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- { name : "Lionel", lastName: "Messi"} must beObject() ``` ### [](#beoneof)beOneOf #### [](#beoneofarrayany-matcher)beOneOf(Array): Matcher 値が指定された Array (配列) に含まれることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- 1 must beOneOf([1, "A Text", true]) ``` ### [](#bestring)beString #### [](#bestring-matcher)beString(): Matcher 指定された値が String (文字列) 型であることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- "A Text" must beString() ``` ### [](#contain)contain #### [](#containstring-matcherstring)contain(String): Matcher アサートされた String (文字列) に指定された String (文字列) が含まれることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- "A Text" must contain("ex") ``` #### [](#containany-matcherarrayany)contain(Any): Matcher> アサートされた Array (配列) に指定された値が含まれることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- [1, "A Text", true] must contain(1) ``` ### [](#eachitem)eachItem #### [](#eachitemmatcherany-matcherarrayany)eachItem(Matcher): Matcher> 配列内の各項目が指定されたマッチャーを満たすことを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- [1,2,3] must eachItem(beNumber()) ``` ### [](#endwith)endWith #### [](#endwithstring-matcherstring)endWith(String): Matcher アサートされた String (文字列) が指定された String (文字列) で終了することを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- "A Text" must endWith("xt") ``` ### [](#equalto)equalTo #### [](#equaltoany-unordered-boolean-matcherany)equalTo(Any, { unordered?: Boolean }): Matcher 値が別の値と等しいことを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- (1 + 2) must equalTo(3) ``` ### [](#equaltoresource)equalToResource #### [](#equaltoresourcestring-string-object-matcherany)equalToResource(String, String, Object): Matcher 指定された値がリソースファイルの内容と等しいことを検証します。 リソースファイルはクラスパスに属している必要があります。 ```dataweave %dw 2.0 import dw::tests::Asserts --- { name: "Lionel", lastName: "Messi" } must equalToResource("user.json", "application/json") ``` ### [](#haveitem)haveItem #### [](#haveitemmatcherany-matcherarrayany)haveItem(Matcher): Matcher> 配列の少なくとも 1 つの項目が指定されたマッチャーを満たすことを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- [1, true, "a text"] must haveItem(beNumber()) ``` ### [](#havekey)haveKey #### [](#havekeystring-matcherobject)haveKey(String): Matcher Object (オブジェクト) に指定されたキーが含まれることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- { name: "Lionel", lastName: "Messi" } must haveKey("name") ``` ### [](#havesize)haveSize #### [](#havesizenumber-matcherarray-string-object)haveSize(Number): Matcher 配列に指定されたサイズが含まれることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- [1, 4, 7] must haveSize(3) ``` ### [](#havevalue)haveValue #### [](#havevalueany-matcherobject)haveValue(Any): Matcher Object (オブジェクト) に指定された値が含まれることを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- { name: "Lionel", lastName: "Messi" } must haveValue("Messi") ``` ### [](#must)must #### [](#mustt-arrayvalue-t-matchert-matcherresult-boolean-matcherresult)must(T, Array<(value: T) → Matcher | MatcherResult | Boolean>): MatcherResult この関数では、式のマッチャーのリストを使用して値をアサートできます。 例 ```dataweave %dw 2.0 import dw::tests::Asserts --- payload must [ beObject(), $.foo is Null ] ``` #### [](#mustt-value-t-matchert-boolean-matcherresult)must(T, (value: T) → Matcher | Boolean): MatcherResult この関数では、式のマッチャーを使用して値をアサートできます。 例 ```dataweave %dw 2.0 import dw::tests::Asserts --- payload must beObject() ``` ### [](#notbe)notBe #### [](#notbematchert-matchert)notBe(Matcher): Matcher 値が指定されたマッチャーを満たさないことを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- 1 must notBe(equalTo(2)) ``` ### [](#notbenull)notBeNull #### [](#notbenull-matcher)notBeNull(): Matcher 指定された値が Null 型ではないことを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- "A Text" must notBeNull() ``` ### [](#startwith)startWith #### [](#startwithstring-matcherstring)startWith(String): Matcher アサートされた String (文字列) が指定された String (文字列) で開始することを検証します。 ```dataweave %dw 2.0 import dw::tests::Asserts --- "A Text" must startWith("A") ``` ## [](#変数)変数 ### [](#matched)MATCHED 成功した一致を表す定数。 ## [](#型)型 ### [](#matcher)Matcher アサーションを実行するマッチャーを表すデータ型。 例 ```dataweave %dw 2.0 import dw::tests::Asserts fun beEqualToOne(): Matcher = (actual) -> do { { matches: actual == 1, description: { expected: "To be 1", actual: write(actual) as String } } } ``` 定義 ```dataweave (value: T) -> MatcherResult ``` ### [](#matcherresult)MatcherResult アサーションの結果を表すデータ型。 例 ```dataweave { "matches": false, description : { expected : "Number type", actual: "A Text" } } ``` 定義 ```dataweave { matches: Boolean, description: { expected: String, actual: String }, reasons?: Array } ``` # Enable Flow Sources MUnit テスト内の Enable Flow Sources 要素は、テストに対してどのフローソースを読み込んで実行するかを MUnit に指示します。 デフォルトでは、MUnit はイベントソース (トリガーやリスナーなどのフローソース) を開始しません。テストでどのフローソースを開始する必要があるかを設定する必要があります。 アプリケーションに、特定のペイロードを返す HTTP リスナーを使用するフローがあるとします。 ```xml ``` MUnit がそのリスナーを呼び出せるようにするには、MUnit テスト内の ​`enable-flow-source`​ プロパティで ​`http-example-flow`​ を有効にする必要があります。 ```xml ``` `http-example-flow`​ 値が有効なフローソースとして表示されていない場合、MUnit テストは HTTP リスナー設定を初期化できないため失敗します。 MUnit はテストの開始時にフローソースを開始し、テストの終了時にフローソースを停止します。フローソースは、before-suite/before-test 中と after-test/after-suite 中は実行されません。 詳細は、​[「Before/After スコープ」](https://docs.mulesoft.com/jp/munit/2.3/before-after-scopes-reference)​を参照してください。 ## [](#anypoint-studio-からフロー提供元を有効にする)Anypoint Studio からフロー提供元を有効にする Studio で MUnit テストの ​**\[Mule Properties (Mule プロパティ)\]**​ ビューを使用して、フローソースを定義できます。 ![Studio の \[Mule Properties (Mule プロパティ)\] ビューを使用して定義されたフローソース。](_images/enable-flow-sources-concept.png) 1. **\[Add (追加)\]**​ をクリックします。 2. **\[Name of the flow (フローの名前)\]**​ ドロップダウンから、有効にするフローの名前を選択します。 # Enable Flow Sources MUnit テスト内の Enable Flow Sources 要素は、テストに対してどのフローソースを読み込んで実行するかを MUnit に指示します。 デフォルトでは、MUnit はイベントソース (トリガーやリスナーなどのフローソース) を開始しません。テストでどのフローソースを開始する必要があるかを設定する必要があります。 アプリケーションに、特定のペイロードを返す HTTP リスナーを使用するフローがあるとします。 ```xml ``` MUnit がそのリスナーを呼び出せるようにするには、MUnit テスト内の ​`enable-flow-source`​ プロパティで ​`http-example-flow`​ を有効にする必要があります。 ```xml ``` `http-example-flow`​ 値が有効なフローソースとして表示されていない場合、MUnit テストは HTTP リスナー設定を初期化できないため失敗します。 MUnit はテストの開始時にフローソースを開始し、テストの終了時にフローソースを停止します。フローソースは、before-suite/before-test 中と after-test/after-suite 中は実行されません。 詳細は、​[「Before/After スコープ」](https://docs.mulesoft.com/jp/munit/3.0/before-after-scopes-reference)​を参照してください。 ## [](#anypoint-studio-からフロー提供元を有効にする)Anypoint Studio からフロー提供元を有効にする Studio で MUnit テストの ​**\[Mule Properties (Mule プロパティ)\]**​ ビューを使用して、フローソースを定義できます。 ![Studio の \[Mule Properties (Mule プロパティ)\] ビューを使用して定義されたフローソース。](_images/enable-flow-sources-concept.png) 1. **\[Add (追加)\]**​ をクリックします。 2. **\[Name of the flow (フローの名前)\]**​ ドロップダウンから、有効にするフローの名前を選択します。 # Exchange からのテストの記録の例 次の例は、Anypoint Studio に Anypoint Exchange から既存のプロジェクトをインポートし、フローの処理を記録して、フローのユニットテストを作成する方法を示しています。 ## [](#前提条件)前提条件 - Studio で Anypoint Platform ログイン情報が設定されていること。 詳細は、​[「Anypoint Platform ログイン情報の設定」](https://docs.mulesoft.com/studio/set-credentials-in-studio-to)​を参照してください。 ## [](#http-connector-サンプルを使用してログインフォームをテストする)HTTP Connector サンプルを使用してログインフォームをテストする 1. \[Open Exchange (Exchange を開く)\] アイコン ![3%](/mulesoft/current/ja-jp/munit/2.3/_images/exchange-icon.png) をクリックします。 2. Exchange のポップアップウィンドウで ​**\[Provided by MuleSoft (MuleSoft による提供)\]**​ を選択し、​**\[Examples (サンプル)\]**​ で絞り込み、​**\[Login Form Using the HTTP Connector (HTTP Connector を使用したログインフォーム)\]**​ を探します。 3. **\[Open (開く)\]**​ をクリックします。 新しい稼働プロジェクトとしてサンプルが Studio にインポートされます。 4. 要求された場合は、​**\[Update your Workspace (ワークスペースを更新)\]**​ で ​**\[Perform update (更新を実行)\]**​ を選択します。 5. \[Manage Mule Projects APIs (Mule プロジェクト API の管理)\] アイコン ![2%](/mulesoft/current/ja-jp/munit/2.3/_images/manage-project-api-icon.png) を選択します。 6. **\[Modules (モジュール)\]**​ を選択し、​**\[MUnit\]**​ と ​**\[Munit Tools (Munit ツール)\]**​ の両方を更新します。 ![update munit](/mulesoft/current/ja-jp/munit/2.3/_images/update-munit.png) 7. **\[Apply and Close (適用して閉じる)\]**​ を選択します。 ### [](#ログイン試行成功のプロセスをテストする)ログイン試行成功のプロセスをテストする 1. プロジェクトで、​`DoLoginFlow`​ を右クリックし、​**\[Munit\]**​ > ​**\[Record new test for this flow (このフローの新しいテストを記録)\]**​ を選択します。 ![login flow test recorder example](/mulesoft/current/ja-jp/munit/2.3/_images/login-flow-test-recorder-example.png) テストレコーダーはプロジェクトを開始し、そのフローで処理されるイベントの記録を開始します。 2. ブラウザーを開き、​`http://0.0.0.0:8081/login`​ に移動します。 3. **\[Username (ユーザー名)\]**​ と ​**\[Password (パスワード)\]**​ の両方に「​`mule`​」と入力し、​**\[Submit (送信)\]**​ をクリックします。 テストレコーダーはこのイベントを取得し、記録を停止します。 4. Studio に戻り、​**\[Configure Test (テストの設定)\]**​ をクリックします。 ![stops recording](/mulesoft/current/ja-jp/munit/2.3/_images/stops-recording.png) 5. テストを記録する MUnit テストスイートのファイル名を選択します。 6. **\[Test name (テスト名)\]**​ で「​`_DoLoginFlow-successfull_`​」と入力します。 7. 記録されたフローの入力を設定するようにテストレコーダーを設定し、記録された出力がテストで想定された出力であることを確認します。 8. **\[Successful login (ログインの成功)\]**​ で、​**\[Verify that this process was called (このプロセスがコールされたことを検証)\]**​ を選択し、カウンターを ​**\[Equal To (等しい)\]**​、「​`_1_`​」回に設定します。 9. **\[Next (次へ)\]**​ をクリックし、​**\[Finish (完了)\]**​ をクリックします。 ログインが成功したときにアプリケーション内のプロセスが予想どおりに機能することを確認するための完全に機能する MUnit テストが生成されます。 ### [](#ログイン試行失敗のプロセスをテストする)ログイン試行失敗のプロセスをテストする 1. プロジェクトで、​`DoLoginFlow`​ を右クリックし、​**\[Munit\]**​ > ​**\[Record new test for this flow (このフローの新しいテストを記録)\]**​ を選択します。 ![login flow test recorder example](/mulesoft/current/ja-jp/munit/2.3/_images/login-flow-test-recorder-example.png) テストレコーダーはプロジェクトを開始し、そのフローで処理されるイベントの記録を開始します。 2. ブラウザーを開き、​`http://0.0.0.0:8081/login`​ に移動します。 3. **\[Username (ユーザー名)\]**​ と ​**\[Password (パスワード)\]**​ の両方に「​`admin`​」と入力し、​**\[Submit (送信)\]**​ をクリックします。 テストレコーダーはこのイベントを取得し、記録を停止します。 4. Studio に戻り、​**\[Configure Test (テストの設定)\]**​ をクリックします。 ![stops recording](/mulesoft/current/ja-jp/munit/2.3/_images/stops-recording.png) 5. テストを記録する MUnit テストスイートのファイル名を選択します。 6. **\[Test name (テスト名)\]**​ で「​`_DoLoginFlow-unsuccessfull_`​」と入力します。 7. 記録されたフローの入力を設定するようにテストレコーダーを設定し、記録された出力がテストで想定された出力であることを確認します。 8. **\[Unsuccessful login (ログインの失敗)\]**​ Parse Template ステップで、​**\[Verify that this process was called (このプロセスがコールされたことを検証)\]**​ を選択し、カウンターを ​**\[Equal To (等しい)\]**​、「​`_1_`​」回に設定します。 9. **\[Next (次へ)\]**​ をクリックし、​**\[Finish (完了)\]**​ をクリックします。 ログインが失敗したときにアプリケーション内のプロセスが予想どおりに機能することを確認するための完全に機能する MUnit テストが生成されます。 ## [](#関連情報)関連情報 - [Studio のテストレコーダー](https://docs.mulesoft.com/jp/munit/2.3/test-recorder) # Exchange からのテストの記録の例 次の例は、Anypoint Studio に Anypoint Exchange から既存のプロジェクトをインポートし、フローの処理を記録して、フローのユニットテストを作成する方法を示しています。 ## [](#前提条件)前提条件 - Studio で Anypoint Platform ログイン情報が設定されていること。 詳細は、​[「Anypoint Platform ログイン情報の設定」](https://docs.mulesoft.com/studio/set-credentials-in-studio-to)​を参照してください。 ## [](#http-connector-サンプルを使用してログインフォームをテストする)HTTP Connector サンプルを使用してログインフォームをテストする 1. \[Open Exchange (Exchange を開く)\] アイコン ​![3%](/mulesoft/current/ja-jp/munit/3.0/_images/exchange-icon.png)​ をクリックします。 2. Exchange のポップアップウィンドウで ​**\[Provided by MuleSoft (MuleSoft による提供)\]**​ を選択し、​**\[Examples (サンプル)\]**​ で絞り込み、​**\[Login Form Using the HTTP Connector (HTTP Connector を使用したログインフォーム)\]**​ を探します。 3. **\[Open (開く)\]**​ をクリックします。 新しい稼働プロジェクトとしてサンプルが Studio にインポートされます。 4. 要求された場合は、​**\[Update your Workspace (ワークスペースを更新)\]**​ で ​**\[Perform update (更新を実行)\]**​ を選択します。 5. \[Manage Mule Projects APIs (Mule プロジェクト API の管理)\] アイコン ​![2%](/mulesoft/current/ja-jp/munit/3.0/_images/manage-project-api-icon.png)​ を選択します。 6. **\[Modules (モジュール)\]**​ を選択し、​**\[MUnit\]**​ と ​**\[Munit Tools (Munit ツール)\]**​ の両方を更新します。 ![update munit](/mulesoft/current/ja-jp/munit/3.0/_images/update-munit.png) 7. **\[Apply and Close (適用して閉じる)\]**​ を選択します。 ### [](#ログイン試行成功のプロセスをテストする)ログイン試行成功のプロセスをテストする 1. プロジェクトで、​`DoLoginFlow`​ を右クリックし、​**\[Munit\]**​ > ​**\[Record new test for this flow (このフローの新しいテストを記録)\]**​ を選択します。 ![login flow test recorder example](/mulesoft/current/ja-jp/munit/3.0/_images/login-flow-test-recorder-example.png) テストレコーダーはプロジェクトを開始し、そのフローで処理されるイベントの記録を開始します。 2. ブラウザーを開き、​`http://0.0.0.0:8081/login`​ に移動します。 3. **\[Username (ユーザー名)\]**​ と ​**\[Password (パスワード)\]**​ の両方に「​`mule`​」と入力し、​**\[Submit (送信)\]**​ をクリックします。 テストレコーダーはこのイベントを取得し、記録を停止します。 4. Studio に戻り、​**\[Configure Test (テストの設定)\]**​ をクリックします。 ![stops recording](/mulesoft/current/ja-jp/munit/3.0/_images/stops-recording.png) 5. テストを記録する MUnit テストスイートのファイル名を選択します。 6. **\[Test name (テスト名)\]**​ で「​`_DoLoginFlow-successfull_`​」と入力します。 7. 記録されたフローの入力を設定するようにテストレコーダーを設定し、記録された出力がテストで想定された出力であることを確認します。 8. **\[Successful login (ログインの成功)\]**​ で、​**\[Verify that this process was called (このプロセスがコールされたことを検証)\]**​ を選択し、カウンターを ​**\[Equal To (等しい)\]**​、「​`_1_`​」回に設定します。 9. **\[Next (次へ)\]**​ をクリックし、​**\[Finish (完了)\]**​ をクリックします。 ログインが成功したときにアプリケーション内のプロセスが予想どおりに機能することを確認するための完全に機能する MUnit テストが生成されます。 ### [](#ログイン試行失敗のプロセスをテストする)ログイン試行失敗のプロセスをテストする 1. プロジェクトで、​`DoLoginFlow`​ を右クリックし、​**\[Munit\]**​ > ​**\[Record new test for this flow (このフローの新しいテストを記録)\]**​ を選択します。 ![login flow test recorder example](/mulesoft/current/ja-jp/munit/3.0/_images/login-flow-test-recorder-example.png) テストレコーダーはプロジェクトを開始し、そのフローで処理されるイベントの記録を開始します。 2. ブラウザーを開き、​`http://0.0.0.0:8081/login`​ に移動します。 3. **\[Username (ユーザー名)\]**​ と ​**\[Password (パスワード)\]**​ の両方に「​`admin`​」と入力し、​**\[Submit (送信)\]**​ をクリックします。 テストレコーダーはこのイベントを取得し、記録を停止します。 4. Studio に戻り、​**\[Configure Test (テストの設定)\]**​ をクリックします。 ![stops recording](/mulesoft/current/ja-jp/munit/3.0/_images/stops-recording.png) 5. テストを記録する MUnit テストスイートのファイル名を選択します。 6. **\[Test name (テスト名)\]**​ で「​`_DoLoginFlow-unsuccessfull_`​」と入力します。 7. 記録されたフローの入力を設定するようにテストレコーダーを設定し、記録された出力がテストで想定された出力であることを確認します。 8. **\[Unsuccessful login (ログインの失敗)\]**​ Parse Template ステップで、​**\[Verify that this process was called (このプロセスがコールされたことを検証)\]**​ を選択し、カウンターを ​**\[Equal To (等しい)\]**​、「​`_1_`​」回に設定します。 9. **\[Next (次へ)\]**​ をクリックし、​**\[Finish (完了)\]**​ をクリックします。 ログインが失敗したときにアプリケーション内のプロセスが予想どおりに機能することを確認するための完全に機能する MUnit テストが生成されます。 ## [](#関連情報)関連情報 - [Studio のテストレコーダー](https://docs.mulesoft.com/jp/munit/3.0/test-recorder) # Fail イベントプロセッサー Fail イベントプロセッサーでは、意図的にテストを失敗させることができます。これは、そのポイントに達した場合にテストが 失敗することを検証するのに役立ちます。 ```xml ``` message 項目は省略可能で、アサーションが失敗したときに表示するエラーメッセージを定義します。 このプロセッサーは ​`java.lang.AssertionError`​ をスローします。 # Fail イベントプロセッサー Fail イベントプロセッサーでは、意図的にテストを失敗させることができます。これは、そのポイントに達した場合にテストが 失敗することを検証するのに役立ちます。 ```xml ``` message 項目は省略可能で、アサーションが失敗したときに表示するエラーメッセージを定義します。 このプロセッサーは ​`java.lang.AssertionError`​ をスローします。 # Foreach プロセッサーの前および内部のメッセージのモック `foreach`​ スコープ内にプロセッサーがあり、反復ごとに異なる値を提供するとします。 ```xml ``` `munit-tools:mock-when`​ プロセッサーを使用してフロー内のプロセッサーをモックし、​`then-call`​ 操作を使用して ​`foreach`​ 状況に応じてペイロードを設定する新しいフローをコールします。 ```xml ``` `then-call`​ によってコールされたフロー内で、​`Choice`​ プロセッサーを使用して値を評価し、モックペイロードを設定できます。この場合、​`foreach`​ カウンターが評価され、設定するペイロードが決定されます。 ```xml ``` ## [](#mule-メッセージのモック)Mule メッセージのモック `file:list`​ や ​`ftp:list`​ などのプロセッサーをモックするには、Mule メッセージコレクションをペイロードとして返す必要があります。​`MunitTools`​ には、これらのペイロードをモックする機能が用意されています。 ```none fun createMessage(payload: Any, attributes: Any = null) fun createMessage(payload: Any, mimeType: String|Null , attributes: Any, attributeMimeType: String|Null) ``` ```xml ``` ## [](#関連情報)関連情報 - [Mock When イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/mock-event-processor) # Foreach プロセッサーの前および内部のメッセージのモック `foreach`​ スコープ内にプロセッサーがあり、反復ごとに異なる値を提供するとします。 ```xml ``` `munit-tools:mock-when`​ プロセッサーを使用してフロー内のプロセッサーをモックし、​`then-call`​ 操作を使用して ​`foreach`​ 状況に応じてペイロードを設定する新しいフローをコールします。 ```xml ``` `then-call`​ によってコールされたフロー内で、​`Choice`​ プロセッサーを使用して値を評価し、モックペイロードを設定できます。この場合、​`foreach`​ カウンターが評価され、設定するペイロードが決定されます。 ```xml ``` ## [](#mule-メッセージのモック)Mule メッセージのモック `file:list`​ や ​`ftp:list`​ などのプロセッサーをモックするには、Mule メッセージコレクションをペイロードとして返す必要があります。 `MunitTools`​ には、これらのペイロードをモックする機能が用意されています。 ```none fun createMessage(payload: Any, attributes: Any = null) fun createMessage(payload: Any, mimeType: String|Null , attributes: Any, attributeMimeType: String|Null) ``` ```xml ``` ## [](#関連情報)関連情報 - [Mock When イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/mock-event-processor) # FTP ユーティリティ FTP サーバーに接続するコードをテストするには、ローカル環境に FTP サーバーをインストールしてテストを実行する必要があります。また、テスト専用の外部 FTP サーバーを使用することもできますが、Maven プロジェクトは移植できません。サードパーティがテスト FTP サーバーをインストールしてプロジェクトをコンパイルする必要があります。 FTP 接続を容易にテストできるように、MUnit ではローカル環境に FTP サーバーを実装できます。 ## [](#munit-ftp-サーバーモジュールのインストール)MUnit FTP サーバーモジュールのインストール 1. Anypoint Studio から、​**\[Mule Palette (Mule パレット)\]**​、​**\[Search in Exchange…​ (Exchange 内を検索…​)\]**​ の順に移動します。 2. 検索バーで​**「MUnit Utils FTP Server」**​ (MUnit ユーティリティ FTP サーバー) を検索し、そのモジュールをプロジェクトに追加します。 ```xml com.mulesoft.munit.utils munit-ftpserver-module 2.0.1 mule-plugin test ``` POM ファイル内の MUnit FTP サーバーアーティファクトには ​`test`​ スコープが必要です。 ## [](#属性リファレンス)属性リファレンス FTP サーバーは次のパラメーターを取ります。
属性名 説明

name

FTP サーバーの設定名を定義します。

この値は一意である必要があります。

port

FTP サーバーがリスンするポートを定義します。

anonymous

(Boolean (ブール)) FTP サーバーへの匿名アクセスを設定します。​anonymous​ が ​true​ に設定している場合は、​anonymous​ ユーザー名を使用して FTP サーバーにアクセスするためにパスワードを設定する必要がありません。

デフォルト値は ​true​ です。

secure

(Boolean (ブール)) FTP プロトコルを定義します。secure パラメーターが true に設定されている場合、サーバーは SFTP サーバーとして動作し、接続は認証を介してのみ許可されます。false に設定されている場合、サーバーは FTP サーバーとして動作し、認証済み接続または匿名接続が許可されます。

デフォルト値は false です。

homeDir

ユーザーのホームディレクトリを定義します。デフォルト値はファイルシステムのルートです。
~​ 文字を使用して FTP ユーザーのホームディレクトリを定義し、ファイルシステム上のホームディレクトリを表すことができます。

## [](#munit-ftp-サーバープロセッサー)MUnit FTP サーバープロセッサー FTP ユーティリティには、FTP サーバーとのやり取りを行うための 2 つのプロセッサーがあります。 contains-files `contains-files`​ プロセッサーは、FTP サーバー内のファイルの存在を検証します。ファイルが存在しない場合、プロセッサーが失敗し、テストが失敗します。 ```xml ```
属性名 説明

config-ref

FTP サーバー設定を定義します。

path

以前に定義したユーザーのホームディレクトリに基づき、検索するフォルダーを定義します。

file

検索するファイルの名前を定義します。

削除 `remove`​ プロセッサーは、役立つ可能性がある別の操作を提供します。この操作は、ストレージからファイルを削除するよう FTP サーバーに指示します。 ```xml ```
属性名 説明

config-ref

FTP サーバー設定を定義します。

path

削除するファイルのフルパス。

この機能は、同じファイル名を何度も作成するときに役立ちます。​`after-test`​ で設定して、名前の競合が原因でテストに失敗しないようにすることができます。 ## [](#関連情報)関連情報 - [MUnit テストでの FTP サーバーユーティリティの設定](https://docs.mulesoft.com/jp/munit/2.3/ftp-server-cookbook) # FTP ユーティリティ FTP サーバーに接続するコードをテストするには、ローカル環境に FTP サーバーをインストールしてテストを実行する必要があります。また、テスト専用の外部 FTP サーバーを使用することもできますが、Maven プロジェクトは移植できません。サードパーティがテスト FTP サーバーをインストールしてプロジェクトをコンパイルする必要があります。 FTP 接続を容易にテストできるように、MUnit ではローカル環境に FTP サーバーを実装できます。 ## [](#munit-ftp-サーバーモジュールのインストール)MUnit FTP サーバーモジュールのインストール 1. Anypoint Studio から、​**\[Mule Palette (Mule パレット)\]**​、​**\[Search in Exchange…​ (Exchange 内を検索…​)\]**​ の順に移動します。 2. 検索バーで​**「MUnit Utils FTP Server」**​ (MUnit ユーティリティ FTP サーバー) を検索し、そのモジュールをプロジェクトに追加します。 ```xml com.mulesoft.munit.utils munit-ftpserver-module 2.0.1 mule-plugin test ``` POM ファイル内の MUnit FTP サーバーアーティファクトには ​`test`​ スコープが必要です。 ## [](#属性リファレンス)属性リファレンス FTP サーバーは次のパラメーターを取ります。
属性名 説明

name

FTP サーバーの設定名を定義します。

この値は一意である必要があります。

port

FTP サーバーがリスンするポートを定義します。

anonymous

(Boolean (ブール)) FTP サーバーへの匿名アクセスを設定します。​anonymous​ が ​true​ に設定している場合は、​anonymous​ ユーザー名を使用して FTP サーバーにアクセスするためにパスワードを設定する必要がありません。

デフォルト値は ​true​ です。

secure

(Boolean (ブール)) FTP プロトコルを定義します。secure パラメーターが true に設定されている場合、サーバーは SFTP サーバーとして動作し、接続は認証を介してのみ許可されます。false に設定されている場合、サーバーは FTP サーバーとして動作し、認証済み接続または匿名接続が許可されます。

デフォルト値は false です。

homeDir

ユーザーのホームディレクトリを定義します。デフォルト値はファイルシステムのルートです。
~​ 文字を使用して FTP ユーザーのホームディレクトリを定義し、ファイルシステム上のホームディレクトリを表すことができます。

## [](#munit-ftp-サーバープロセッサー)MUnit FTP サーバープロセッサー FTP ユーティリティには、FTP サーバーとのやり取りを行うための 2 つのプロセッサーがあります。 contains-files `contains-files`​ プロセッサーは、FTP サーバー内のファイルの存在を検証します。ファイルが存在しない場合、プロセッサーが失敗し、テストが失敗します。 ```xml ```
属性名 説明

config-ref

FTP サーバー設定を定義します。

path

以前に定義したユーザーのホームディレクトリに基づき、検索するフォルダーを定義します。

file

検索するファイルの名前を定義します。

削除 `remove`​ プロセッサーは、役立つ可能性がある別の操作を提供します。この操作は、ストレージからファイルを削除するよう FTP サーバーに指示します。 ```xml ```
属性名 説明

config-ref

FTP サーバー設定を定義します。

path

削除するファイルのフルパス。

この機能は、同じファイル名を何度も作成するときに役立ちます。​`after-test`​ で設定して、名前の競合が原因でテストに失敗しないようにすることができます。 ## [](#関連情報)関連情報 - [MUnit テストでの FTP サーバーユーティリティの設定](https://docs.mulesoft.com/jp/munit/3.0/ftp-server-cookbook) # Mock When イベントプロセッサー **Mock When**​ プロセッサーでは、定義された名前と属性に一致したときにイベントプロセッサーをモックできます。 たとえば、​**Mock Event**​ プロセッサーを使用して、モックペイロードで POST 要求をモックできます。 ```xml ``` モックするプロセッサーを定義するように ​**processor**​ 属性を設定し、属性の名前と値を定義するように ​**with-attribute**​ 要素を設定できます。上記の例では、POST メソッドを定義します。 DataWeave の機能とマッピングを使用して、​**then-return**​ 要素の ​`value`​ 属性を設定することもできます。たとえば、​**src/test/resources/sample\_data**​ ファイル内に ​**mockPost.dwl**​ を作成します。 ```none %dw 2.0 output application/json --- { "foo" : "var" } ``` 次の DataWeave ファイルは、POST 要求で送信するペイロードを作成します。その後、​**readUrl**​ DataWeave 機能を使用してマッピングファイルを読み込むことができます。 ```xml ``` 最後に、モックプロセッサーが返す応答種別を定義するように ​**then-return**​ 要素を設定できます。ペイロード、変数、属性のリスト、またはエラーにできます。 **then-return**​ を使用して静的な定数値を返すか、​**then-call**​ を使用して返される値が経時的に変化する可能性がある場合にフローを呼び出したり、特定の入力に応じて異なる応答を使用したりできます。
プロセッサーのモックは Mule アプリケーションの初期化後に実行され、プロセッサーがモックされる場合であっても、一部のコネクタでアプリケーションを起動するにはログイン情報または設定が必要な場合があります。
Logger プロセッサーや Transform Message プロセッサー (DataWeave) はモックできません。
## [](#then-return-を使用したモック)Then-Return を使用したモック たとえば、次のような Web サービスコンシューマーをモックできます。 ```xml ``` 次の例で示しているように、​**mock-when**​ プロセッサーを設定します。 ```xml ``` この ​**mock-when**​ プロセッサーは、WSDL 定義内の ​**OrderTshirt**​ 操作へのコールをモックします。 特定の変数をモックすることもできます。 ```xml ``` ### [](#モックエラー)モックエラー **Mock When**​ プロセッサーは、操作でのエラーをモックすることもできます。接続が失敗した場合に接続エラーをキャッチしてカスタムペイロードを返す、On-Error スコープを含む HTTP リクエスターがフロー内にあるとします。 ```xml ``` HTTP 要求が失敗するたびに、アプリケーションはカスタムペイロードを返すとアサートできます。 ```xml (1) (2) (3) (4) ```
1フロー内のリクエスターの設定で HTTP 要求をモックします。
2HTTP:CONNECTIVITY​ エラーをスローするように then-return 要素を設定します。
これにより、アプリケーション内の On-error スコープがトリガーされます。
3リクエスターを含むフローを実行します。
4返されたペイロードが On-error スコープで設定したものであるとアサートします。
Mule アプリケーションのすべての既知のエラー種別を返すことはできません。現在のフローで使用するモジュールで定義されている種別のエラーを返すことができます。テスト中のフローのスコープ外のエラー種別を返そうとすると、設定されたエラーではなく、​**MULE:UNKNOWN**​ エラーが返されます。 ### [](#パラメーター)パラメーター モックエラーを作成する場合は、次のパラメーターのいずれかを選択して ​**\[Then-return\]**​ タブでのエラーのトリガーを提供します。 - **TypeId**​: Mule エラー種別の定義に従います。たとえば、上記で説明した HTTP:CONNECTIVITY エラーです。 - **Cause**​: エラーのメッセージを含む例外のインスタンスを期待します。たとえば、Java を使用して、次の例外を記述します。 ```java #[java!java::lang::Exception::new("Exception Message")] ``` ## [](#then-call-を使用したモック)Then-Call を使用したモック 変数を動的にモックするには、次のように ​**then-call**​ を使用します。 ```xml (1) (2) (3) ```
1これがモックするプロセッサーです。
2モックによってこのフローがコールされます。モックによって、受信イベントに応じて変化する変数が設定されます。
3目的のフローをコールするようにモックを設定します。
## [](#関連情報)関連情報 - [Assert That イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/assertion-event-processor) - [Fail イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/fail-event-processor) - [Run Custom イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/run-custom-event-processor) - [Set イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/set-event-processor) - [Verify イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/verify-event-processor) # Mock When イベントプロセッサー **Mock When**​ プロセッサーでは、定義された名前と属性に一致したときにイベントプロセッサーをモックできます。 たとえば、​**Mock Event**​ プロセッサーを使用して、モックペイロードで POST 要求をモックできます。 ```xml ``` モックするプロセッサーを定義するように ​**processor**​ 属性を設定し、属性の名前と値を定義するように ​**with-attribute**​ 要素を設定できます。上記の例では、POST メソッドを定義します。 DataWeave の機能とマッピングを使用して、​**then-return**​ 要素の ​`value`​ 属性を設定することもできます。たとえば、​**src/test/resources/sample\_data**​ ファイル内に ​**mockPost.dwl**​ を作成します。 ```none %dw 2.0 output application/json --- { "foo" : "var" } ``` 次の DataWeave ファイルは、POST 要求で送信するペイロードを作成します。その後、​**readUrl**​ DataWeave 機能を使用してマッピングファイルを読み込むことができます。 ```xml ``` 最後に、モックプロセッサーが返す応答種別を定義するように ​**then-return**​ 要素を設定できます。ペイロード、変数、属性のリスト、またはエラーにできます。 **then-return**​ を使用して静的な定数値を返すか、​**then-call**​ を使用して返される値が経時的に変化する可能性がある場合にフローを呼び出したり、特定の入力に応じて異なる応答を使用したりできます。
プロセッサーのモックは Mule アプリケーションの初期化後に実行され、プロセッサーがモックされる場合であっても、一部のコネクタでアプリケーションを起動するにはログイン情報または設定が必要な場合があります。
Logger プロセッサーや Transform Message プロセッサー (DataWeave) はモックできません。
## [](#then-return-を使用したモック)Then-Return を使用したモック たとえば、次のような Web サービスコンシューマーをモックできます。 ```xml ``` 次の例で示しているように、​**mock-when**​ プロセッサーを設定します。 ```xml ``` この ​**mock-when**​ プロセッサーは、WSDL 定義内の ​**OrderTshirt**​ 操作へのコールをモックします。 特定の変数をモックすることもできます。 ```xml ``` ### [](#モックエラー)モックエラー **Mock When**​ プロセッサーは、操作でのエラーをモックすることもできます。接続が失敗した場合に接続エラーをキャッチしてカスタムペイロードを返す、On-Error スコープを含む HTTP リクエスターがフロー内にあるとします。 ```xml ``` HTTP 要求が失敗するたびに、アプリケーションはカスタムペイロードを返すとアサートできます。 ```xml (1) (2) (3) (4) ```
1フロー内のリクエスターの設定で HTTP 要求をモックします。
2HTTP:CONNECTIVITY​ エラーをスローするように then-return 要素を設定します。
これにより、アプリケーション内の On-error スコープがトリガーされます。
3リクエスターを含むフローを実行します。
4返されたペイロードが On-error スコープで設定したものであるとアサートします。
Mule アプリケーションのすべての既知のエラー種別を返すことはできません。現在のフローで使用するモジュールで定義されている種別のエラーを返すことができます。テスト中のフローのスコープ外のエラー種別を返そうとすると、設定されたエラーではなく、​**MULE:UNKNOWN**​ エラーが返されます。 ### [](#パラメーター)パラメーター モックエラーを作成する場合は、次のパラメーターのいずれかを選択して ​**\[Then-return\]**​ タブでのエラーのトリガーを提供します。 - **TypeId**​: Mule エラー種別の定義に従います。たとえば、上記で説明した HTTP:CONNECTIVITY エラーです。 - **Cause**​: エラーのメッセージを含む例外のインスタンスを期待します。たとえば、Java を使用して、次の例外を記述します。 ```java #[java!java::lang::Exception::new("Exception Message")] ``` ## [](#then-call-を使用したモック)Then-Call を使用したモック 変数を動的にモックするには、次のように ​**then-call**​ を使用します。 ```xml (1) (2) (3) ```
1これがモックするプロセッサーです。
2モックによってこのフローがコールされます。モックによって、受信イベントに応じて変化する変数が設定されます。
3目的のフローをコールするようにモックを設定します。
## [](#関連情報)関連情報 - [Assert That イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/assertion-event-processor) - [Fail イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/fail-event-processor) - [Run Custom イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/run-custom-event-processor) - [Set イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/set-event-processor) - [Verify イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/verify-event-processor) # MUnit Cookbook このセクションは、一般的な MUnit の使用法を説明する例にリンクしています。
例 説明

MUnit テスト用にテストコードをモックします。

異なるペイロードを返すことができるプロセッサーをモックします。

コードで予想されるエラーをモックします。

MUnit テストにさまざまな環境値を読み込みます。

MUnit テストでカスタム Java クラスを使用します。

FTP サーバー接続をテストするために FTP ユーティリティを設定します。

データベース接続をテストするためにデータベースユーティリティを設定します。

パッチ適用済み Mule Runtime エンジンバージョンに対して実行するように MUnit を設定します。

Mule ドメインを継承する Mule アプリケーションをテストします。

スケジューラーによってトリガーされるフローをテストします。

MUnit テストレコーダーを使用します。

保存された変数のコンテンツをアサーションで確認します。

# MUnit Cookbook このセクションは、一般的な MUnit の使用法を説明する例にリンクしています。
例 説明

MUnit テスト用にテストコードをモックします。

異なるペイロードを返すことができるプロセッサーをモックします。

コードで予想されるエラーをモックします。

MUnit テストにさまざまな環境値を読み込みます。

MUnit テストでカスタム Java クラスを使用します。

FTP サーバー接続をテストするために FTP ユーティリティを設定します。

データベース接続をテストするためにデータベースユーティリティを設定します。

パッチ適用済み Mule Runtime エンジンバージョンに対して実行するように MUnit を設定します。

Mule ドメインを継承する Mule アプリケーションをテストします。

スケジューラーによってトリガーされるフローをテストします。

MUnit テストレコーダーを使用します。

保存された変数のコンテンツをアサーションで確認します。

# MUnit Maven プラグイン MUnit には、継続的インテグレーション環境の一部として MUnit テストを実行できる Maven プラグインが用意されています。 Maven インストールの ​`pom.xml`​ または ​`settings.xml`​ ファイルへの次の設定は、Maven を介して MUnit を実行する場合のみ適用されます。 ## [](#munit-maven-プラグインのセットアップ)MUnit Maven プラグインのセットアップ このドキュメントは、pom.xml に ​``​ プロパティがあることを前提とします。 - `pom.xml`​ ファイルで MUnit Maven プラグインを有効にする。 MUnit Maven プラグイン ```xml ... com.mulesoft.munit.tools munit-maven-plugin ${munit.version} test test test ... ``` - `pom.xml`​ ファイルに MUnit 連動関係を追加する。 連動関係 ```xml ... com.mulesoft.munit munit-runner ${munit.version} mule-plugin test com.mulesoft.munit munit-tools ${munit.version} mule-plugin test ... ``` - MUnit 連動関係とプラグインのリポジトリを設定する。 リポジトリ ```xml mulesoft-releases MuleSoft Releases Repository https://repository.mulesoft.org/releases/ default ``` プラグインリポジトリ ```xml mulesoft-release mulesoft release repository default https://repository.mulesoft.org/releases/ false ``` MUnit には Surefire サポートが組み込まれています。 レポートは ​`target/surefire-reports`​ に出力されます。 ### [](#親-pom-ファイルの処理)親 POM ファイルの処理 親 ​`pom.xml`​ ファイルで MUnit プラグインを宣言できます。このファイルの下位のすべての子プロジェクトはこの定義を参照できます。 親 - 子 POM リレーションで MUnit Maven プラグインを設定するには、親 ​`pom.xml`​ ファイルの ​``​ セクションに MUnit プラグインの宣言を含めます。 次の例では、​`pirate-pom`​ プロジェクトは、そのプラグイン管理セクションで MUnit Maven プラグインを宣言し、この親の下位の各子が参照、上書き、または無視できるグローバル設定を定義しています。 ```xml 4.1.0 org.pirate pirate-pom 1.0-SNAPSHOT pom 2.3.0 com.mulesoft.munit.tools munit-maven-plugin ${munit.version} test test test true false 0 0 0 console html ``` ### [](#親のプラグインの継承)親のプラグインの継承 子 ​`pom.xml`​ ファイルで MUnit プラグインを継承するには、そのプラグインを各子の POM ファイルの ​``​ セクションで個別に参照します。 次のサンプルでは、​`pirate-pom`​ ファイルをその親として参照し、次に ​``​ セクションで MUnit プラグインを宣言しています。MUnit プラグイン設定が親の POM ファイルの ​``​ セクションから継承されるため、MUnit プラグインの ​``​ は指定されていません。 子の POM ファイルのサンプル ```xml org.pirate pirate-pom 1.0-SNAPSHOT 4.0.0 com.mycompany ninja 1.0.0-SNAPSHOT mule Mule ninja Application UTF-8 UTF-8 4.1.4 2.3.0 com.mulesoft.munit.tools munit-maven-plugin ``` ### [](#親のプラグインの無視)親のプラグインの無視 親の ​`pom.xml`​ ファイルの下の各子プロジェクトで、親のプラグイン管理セクションで参照されているプラグインを無視し、そこで宣言されているプラグイン設定を実装しないように選択できます。 ``​ セクションで Munit プラグインを宣言しないことで、​**pirate-pom**​ で宣言されたプラグインが継承されなくなります。 MUnit Maven プラグインを継承しない子の POM ファイル ```xml org.pirate pirate-pom 1.0-SNAPSHOT 4.0.0 com.mycompany ninja 1.0.0-SNAPSHOT mule Mule ninja Application UTF-8 UTF-8 4.1.0 2.3.0 ``` ### [](#親のプラグインの上書き)親のプラグインの上書き 親の POM ファイルからプラグインを継承する場合、親の設定を上書きすることもできます。親の POM ファイルのプラグイン設定を上書きすると元の設定が抑制されるため、すべての必要な設定を再度宣言することが必要になります。 次の例では、親の POM ファイルのコンソールカバー率レポートを上書きし、HTML レポートに置き換えます。親の他の要素 (​``​、​``​、​``​、​``​) の値が参照されていないため、この子ファイルはこれらの要素を継承せず、デフォルト値が適用されます。 親の POM ファイルでのカバー率設定 ```xml true false 0 0 0 console html ``` カバー率レポートの形式を上書きする子の POM ファイル ```xml com.mulesoft.munit.tools munit-maven-plugin true html ``` ## [](#カバー率のセットアップ)カバー率のセットアップ 次の設定は、Maven プラグインを使用して MUnit テストを実行する場合のみ適用されます。Studio からテストを実行する場合は適用されません。詳細は、​[「Maven でのカバー率の使用」](https://docs.mulesoft.com/jp/munit/2.3/coverage-maven-concept)​を参照してください。 MUnit 2.x 以降、カバー率レポートのゴールは Maven のレポートセクションと統合されています。カバー率レポートは、​`coverage-report`​ ゴール中の Maven の ​`site`​ ライフサイクル中に生成されます。 次の設定は、Maven プラグインを使用して MUnit テストを実行する場合のみ適用されます。Studio からテストを実行する場合は適用されません。 Studio でカバー率レポートを実行するには、​[「Studio でのカバー率の使用」](https://docs.mulesoft.com/jp/munit/2.3/coverage-studio-concept)​を参照してください。 MUnit カバー率 - サンプル Maven 設定 ```xml com.mulesoft.munit.tools munit-maven-plugin ${munit.version} test test test coverage-report true false 75 50 50 console html ``` ### [](#最小カバー率レベルのセットアップ)最小カバー率レベルのセットアップ MUnit カバー率の機能の 1 つは、特定のカバー率レベルに到達しない場合にビルドを失敗させることです。 MUnit カバー率は 3 つの異なるレベルを処理します。 - **アプリケーション**​: すべてのアプリケーションの全体的なカバー率。 - **リソース**​: 個々の Mule 設定ファイルのカバー率レベル。 - **フロー**​: 各フローのイベントプロセッサーのカバー率。 必要なカバー率レベルを定義する方法は、次のとおりです。 MUnit カバー率 - 必要なカバー率 ```xml true true 75 (1) 50 50 ```
1各値はパーセントを表します。
パーセントが定義されていない場合はデフォルトで ​-1​ が設定され、そのレベルの要件が定義されていないことを示し、カバー率が低いためにビルドは失敗しません。
カバー率レベルを定義してプロパティ ​`failBuild`​ を ​**false**​ に設定し、レベルに到達していない場合、MUnit カバー率サマリーに警告が表示されます。 ```console =============================================================================== 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 カバー率 - フローとファイルの両方を無視 ```xml true true 100 100 100 flow-1 flow-2 ... flow-n mule-config-1.xml mule-config-2.xml ... mule-config-n.xml ``` ## [](#動的ポート)動的ポート MUnit 2.2 以降では ​`dynamic-port`​ グローバル要素が導入されているため、MUnit スイートレベルで動的ポートを定義できます。次に説明されているプラグイン設定の代わりにこの要素を使用すると、Maven と Studio の両方から動的ポートを設定できます。 この要素を設定する方法については、​[「動的ポート」](https://docs.mulesoft.com/jp/munit/2.3/dynamic-ports)​を参照してください。 継続的インテグレーション (CI) 環境で Mule アプリケーションをテストする場合、次のシナリオが発生することがあります。 Your application tries to open a specific port. The port is already in use. The application fails with a port binding exception. MUnit Maven プラグインには、アプリケーションで空きポートを使用する機能が組み込まれています。 MUnit 動的ポートは、Mule アプリケーションのテストを開始する前に、バインドされていないポートを探して予約するよう MUnit Maven プラグインに指示します。選択された各ポートは、設定に示されている名前でシステムプロパティに配置されます。その後、アプリケーションはプレースホルダーを使用してポート番号を取得できます。 プラグインにより選択されるポートは、​`[40000,50000]`​ の範囲から取得されます。

動的ポート機能は MUnit Maven プラグインの一部としてのみ使用できます。Anypoint Studio 内からテストを実行する場合、この機能は動作しません。

### [](#動的ポートの有効化)動的ポートの有効化 この機能を有効にするには、次のコードを MUnit Maven プラグインの ​`configuration`​ セクションに追加する必要があります。 動的ポートの設定 ```xml com.mulesoft.munit.tools munit-maven-plugin ... a.dynamic.port ... ``` アプリケーションに ​`${http.port}`​ プレースホルダーが含まれる場合、設定は次のようになります。 例 ```xml http.port ``` ### [](#アプリケーションの準備)アプリケーションの準備 プレースホルダーでは、ポートを使用するアプリケーションの一部をパラメーター化する必要があります。たとえば、Mule アプリケーションに HTTP トラフィックをリスンさせるには、次の設定を指定します。 HTTP アプリケーション ```xml ``` 以前のアプリケーションはポート ​`8081`​ で常にリスンします。これを動的に行うには、次のように変更します。 動的ポートを使用する HTTP アプリケーション ```xml (1) ```
1プレースホルダー ​${http.port}​ に注意してください。
アプリケーションをこのようにコーディングし、動的ポートの設定を適用したら、アプリケーションは、開始する各実行で異なるポートをリスンします。 ## [](#surefire-レポートの有効化)Surefire レポートの有効化 MUnit には Surefire のサポートが組み込まれています。追加の設定は必要ありませんが、必要でない場合はこれを無効にできます。 Surefire レポートの無効化 ```none false ``` レポートは ​`${project.build.directory}/surefire-reports`​ の下にあります。 デフォルトでは、これは ​`true`​ に設定されます。 ## [](#sonar-レポートの有効化)SONAR レポートの有効化 MUnit では、​`enableSonarReports`​ のデフォルト設定である ​`true`​ で SonarQube を組み込みサポートしています。それ以上の設定は必要ありません。 このレポートは ​`${project.build.directory}/sonar-reports`​ にあります。 SONAR レポートが必要なければ無効化できます。 SONAR レポートの無効化 ```none false ``` レポートは ​`${project.build.directory}/sonar-reports`​ の下にあります。 デフォルトでは、これは ​`true`​ に設定されます。 ## [](#プラグインを使用したテストの実行)プラグインを使用したテストの実行 ### [](#mule-アプリケーションの-munit-テストの実行)Mule アプリケーションの MUnit テストの実行 単一リソース Mule プロジェクトで MUnit テストを実行します。 ```none mvn clean test ``` ### [](#特定の-munit-テストスイートの実行)特定の MUnit テストスイートの実行 プロパティ ​`munit.test`​ を使用して、特定のテストスイートに属するテストのみを実行するように MUnit Maven プラグインに指示できます。 ```maven mvn clean test -Dmunit.test= ``` このパスは、​`src/test/munit`​ に対して相対的です。 プロパティ ​`munit.test`​ は、正規表現に対応しています。この式は、MUnit テストスイートファイルの名前に適用されます。正規表現の言語は Java 実装です。 次に例を示します。 ```console mvn clean test -Dmunit.test=.*my-test.* ``` この機能を利用するには、命名規則を MUnit テストスイートに追加します。 ### [](#特定の-munit-テストの実行)特定の MUnit テストの実行 1 つのテストスイートを実行するように MUnit に指示する場合と同じ方法で、テストスイート内の特定のテストを実行するように MUnit を設定できます。テスト名を追加するには、プロパティ ​`munit.test`​ に特殊文字 ​`#`​ を追加して使用する必要があります。 ```console mvn clean test -Dmunit.test=# ``` これも、正規表現に対応しています。式は、MUnit テストの属性 ​`name`​ に適用されます。次に例を示します。 ```console mvn clean test -Dmunit.test=.*my-test.*#.*test-scenario-1.* ``` 正規表現に一致しない MUnit テストスイート内のテストは、​**ignored**​ フラグが設定されます。 `pom.xml`​ 設定からこれを設定することもできます。 ```xml com.mulesoft.munit.tools munit-maven-plugin ... example-MunitTest-suite.xml ... ``` ### [](#特定のタグを使用したテストの実行)特定のタグを使用したテストの実行 1 つの特定のタグでグループ化したテストのみを実行できます。 ```console mvn clean test -Dmunit.tags= ``` `pom.xml`​ 設定からこれを設定することもできます。 ```xml com.mulesoft.munit.tools munit-maven-plugin ... exampleMunitTag ... ``` 複数のタグをカンマで区切って指定できます。 ### [](#すべてのテストをスキップ)すべてのテストをスキップ MUnit は Maven と同じメカニズムを利用します。テストをスキップするには、​`skipTests`​ パラメーターを使用する必要があります。 テストのスキップの例 ```console mvn clean package -DskipTests ``` `pom.xml`​ 設定からこれを設定することもできます。 ```xml com.mulesoft.munit.tools munit-maven-plugin ... true ... ``` ### [](#1-つのスイートが失敗した場合にテストをスキップ)1 つのスイートが失敗した場合にテストをスキップ MUnit では、1 つのテストスイートが失敗した場合に残りのテストをスキップすることができます。 ```xml com.mulesoft.munit.tools munit-maven-plugin ... true ... ``` 指定しない場合、この値はデフォルトで ​`false`​ になります。 ## [](#specify-runtime-product)ランタイム製品の指定 テストするアプリケーションをどのランタイムの種別で実行するかを指定できます。可能な値: - `MULE`​: Community Edition の場合。 - `MULE_EE`​: Enterprise Edition の場合。 ```xml com.mulesoft.munit.tools munit-maven-plugin ... MULE ... ``` ### [](#ランタイム製品バージョンの指定)ランタイム製品バージョンの指定 MUnit では、テストするアプリケーションをどのランタイムバージョンで実行するかを指定できます。 ```xml com.mulesoft.munit.tools munit-maven-plugin ... 4.2.2 ... ``` ## [](#jvm-の指定)JVM の指定 テストするアプリケーションをどの JVM (または Java 実行可能ファイル) で実行するかを指定できます。​`munit.jvm`​ パラメーターに実行可能ファイルへのパスを入力する必要があります。 JVM の指定 ```console mvn clean package -Dmunit.jvm=/path/to/jdk/bin/java ``` `pom.xml`​ 設定からこれを設定することもできます。 ```xml com.mulesoft.munit.tools munit-maven-plugin ... /path/to/jdk/bin/java ... ``` ### [](#追加の引数行)追加の引数行 JVM に追加の引数行を渡すことができます。各引数を個別の ​`argLine`​ で指定します。 引数行 ```xml com.mulesoft.munit.tools munit-maven-plugin ... -XX:MaxPermSize=512m -Xmx1024m ... ``` ### [](#環境変数)環境変数 テスト実行時に追加の環境変数を設定するには、各環境変数をそれぞれのキーと値を使用して指定できます。 追加の環境変数 ```xml com.mulesoft.munit.tools munit-maven-plugin ... exampleValue val2 ... ``` 前の例に示されているように、環境変数を使用して、​`${MY_ENV}`​ などのプレースホルダーを置き換えることができます。 ### [](#システムプロパティ変数)システムプロパティ変数 MUnit テストを正常に実行するために、特定のシステム変数の定義が必要な場合があります。 システムプロパティ変数の設定 ```xml com.mulesoft.munit.tools munit-maven-plugin ... my.property.value ... ``` 実行コンテキストに応じて、システムプロパティの値が変わる場合があります。このようなプロパティを参照する場合、その値を上書きしてテストの再現性を強化することをお勧めします。 これを行うには、Maven を使用して MUnit を実行するときに ­​`-D`​ 引数を使用できます。 ​`-D`​ 引数と共に渡された変数は、他のどのプロパティよりも優先されます。次に例を示します。 ```none -Dmy.property.key=my.property.another.value ``` ## [](#ファイルへのテスト出力のリダイレクト)ファイルへのテスト出力のリダイレクト 複数のテストを実行すると、ビルド出力が非常に複雑になり、読みづらくなる可能性があります。各テストスイートの出力をファイルにリダイレクトできます。これにより、テスト結果のみがビルド出力に残ります。それぞれのファイルで、各テストスイートの標準出力を確認できます。 これらのファイルは ​`testOutputDirectory`​ フォルダーに、​`munit.${suiteName}-output.txt`​ の命名規則に従って配置されます。​`suiteName`​ は MUnit テストフォルダーを基準とする XML ファイルの相対的な名前を表します。 特定のスイートに属さないテストの出力は、ビルド出力をクリーンな状態に維持するため印刷されませんが、Maven をデバッグモードで実行することで、これを有効にできます。 各テストスイートの出力をファイルにリダイレクトする方法 ファイルへのテスト出力のリダイレクト ```xml com.mulesoft.munit.tools munit-maven-plugin ... true ... ``` デフォルトでは、これは ​`false`​ に設定されます。 ### [](#テスト出力ディレクトリ)テスト出力ディレクトリ テスト出力ファイルを作成する場所を選択できます。指定するパスを絶対パスとしたり、Maven プレースホルダーとして記述したりできます。 絶対パスを使用したテスト出力ディレクトリ ```xml com.mulesoft.munit.tools munit-maven-plugin ... /my/absolute/path ... ``` Maven プレースホルダーを使用したテスト出力ディレクトリ ```xml ${project.build.directory}/my/output/folder ``` デフォルトでは、ファイルは ​`${project.build.directory}/munit-reports/output/`​ に作成されます。 ## [](#munit-maven-プラグイン設定リファレンス)MUnit Maven プラグイン設定リファレンス MUnit Maven プラグインでは、一連の省略可能なパラメーターを設定できます。
Table 1. Maven プラグインパラメーター
名前 型 説明

argLines

List

テスト実行で設定する追加の JVM 引数行。

coverage

設定

テスト実行で設定されるカバー率設定。

dynamicPorts

List

テスト実行で設定される動的ポート。

enableSurefireReports

boolean (ブール)

surefire 形式で MUnit テストの結果を生成するには、値を ​true​ に設定します。
デフォルト値: true​

munitTest

String (文字列)

実行する MUnit の名前。

munitTags

String (文字列)

MUnit タグの名前。これらの名前でタグ付けされたテストのみが実行されます。

skipMunitTests

boolean (ブール)

すべての MUnit テストをスキップする場合、​true​ に設定します。
デフォルト値: false​

skipAfterFailure

boolean (ブール)

1 つのテストが失敗すると、すべてのテストがスキップされます。
デフォルト値: false​

munitTestsDirectory

File (ファイル)

MUnit テストが保存されているディレクトリ。
デフォルト値: ${project.build.directory}/test-mule/munit​

runtimeVersion

String (文字列)

Mule Runtime のバージョン
Maven からテストを実行する場合、この値は ​mule-artifact.json​ ファイルの ​minMuleVersion​ パラメーターから取得されます。
Studio での MUnit テストの実行に使用する Mule Runtime バージョンを変更するには、​「Studio を使用して MUnit にパッチを適用する」​を参照してください。

runtimeProduct

String (文字列)

Runtime の種別。使用できる値は次のとおりです。

  • MULE​: Community Edition の場合。

  • MULE_EE​: Enterprise Edition の場合。

デフォルトでは、この値は ​mule-artifact.json​ ファイルの ​requiredProduct​ パラメーターから取得されます。

jvm

String (文字列)

使用する JVM (または Java 実行可能ファイルへのパス) を指定するオプション。

デフォルトでは、JVM は Maven の実行に使用される VM と同じです。

environmentVariables

Map (マップ)

テスト実行で設定される追加の環境変数。

redirectTestOutputToFile

boolean (ブール)

MUnit テストの標準出力をファイルにリダイレクトするには、値を ​true​ に設定します。
デフォルト値: false​

systemPropertyVariables

Map (マップ)

テスト実行で設定されるシステムプロパティ。

testOutputDirectory

ファイル

テスト出力が書き込まれるディレクトリ。
デフォルト値: ${project.build.directory}/munit-reports/output/​

# MUnit Maven プラグイン MUnit には、継続的インテグレーション環境の一部として MUnit テストを実行できる Maven プラグインが用意されています。 Maven インストールの ​`pom.xml`​ または ​`settings.xml`​ ファイルへの次の設定は、Maven を介して MUnit を実行する場合のみ適用されます。 ## [](#munit-maven-プラグインのセットアップ)MUnit Maven プラグインのセットアップ このドキュメントは、pom.xml に ​``​ プロパティがあることを前提とします。 - `pom.xml`​ ファイルで MUnit Maven プラグインを有効にする。 MUnit Maven プラグイン ```xml ... com.mulesoft.munit.tools munit-maven-plugin ${munit.version} test test test ... ``` - `pom.xml`​ ファイルに MUnit 連動関係を追加する。 連動関係 ```xml ... com.mulesoft.munit munit-runner ${munit.version} mule-plugin test com.mulesoft.munit munit-tools ${munit.version} mule-plugin test ... ``` - MUnit 連動関係とプラグインのリポジトリを設定する。 リポジトリ ```xml mulesoft-releases MuleSoft Releases Repository https://repository.mulesoft.org/releases/ default ``` プラグインリポジトリ ```xml mulesoft-release mulesoft release repository default https://repository.mulesoft.org/releases/ false ``` MUnit には Surefire サポートが組み込まれています。 レポートは ​`target/surefire-reports`​ に出力されます。 ### [](#親-pom-ファイルの処理)親 POM ファイルの処理 親 ​`pom.xml`​ ファイルで MUnit プラグインを宣言できます。このファイルの下位のすべての子プロジェクトはこの定義を参照できます。 親 - 子 POM リレーションで MUnit Maven プラグインを設定するには、親 ​`pom.xml`​ ファイルの ​``​ セクションに MUnit プラグインの宣言を含めます。 次の例では、​`pirate-pom`​ プロジェクトは、そのプラグイン管理セクションで MUnit Maven プラグインを宣言し、この親の下位の各子が参照、上書き、または無視できるグローバル設定を定義しています。 ```xml 4.1.0 org.pirate pirate-pom 1.0-SNAPSHOT pom 2.3.0 com.mulesoft.munit.tools munit-maven-plugin ${munit.version} test test test true false 0 0 0 console html ``` ### [](#親のプラグインの継承)親のプラグインの継承 子 ​`pom.xml`​ ファイルで MUnit プラグインを継承するには、そのプラグインを各子の POM ファイルの ​``​ セクションで個別に参照します。 次のサンプルでは、​`pirate-pom`​ ファイルをその親として参照し、次に ​``​ セクションで MUnit プラグインを宣言しています。MUnit プラグイン設定が親の POM ファイルの ​``​ セクションから継承されるため、MUnit プラグインの ​``​ は指定されていません。 子の POM ファイルのサンプル ```xml org.pirate pirate-pom 1.0-SNAPSHOT 4.0.0 com.mycompany ninja 1.0.0-SNAPSHOT mule Mule ninja Application UTF-8 UTF-8 4.1.4 2.3.0 com.mulesoft.munit.tools munit-maven-plugin ``` ### [](#親のプラグインの無視)親のプラグインの無視 親の ​`pom.xml`​ ファイルの下の各子プロジェクトで、親のプラグイン管理セクションで参照されているプラグインを無視し、そこで宣言されているプラグイン設定を実装しないように選択できます。 ``​ セクションで Munit プラグインを宣言しないことで、​**pirate-pom**​ で宣言されたプラグインが継承されなくなります。 MUnit Maven プラグインを継承しない子の POM ファイル ```xml org.pirate pirate-pom 1.0-SNAPSHOT 4.0.0 com.mycompany ninja 1.0.0-SNAPSHOT mule Mule ninja Application UTF-8 UTF-8 4.1.0 2.3.0 ``` ### [](#親のプラグインの上書き)親のプラグインの上書き 親の POM ファイルからプラグインを継承する場合、親の設定を上書きすることもできます。親の POM ファイルのプラグイン設定を上書きすると元の設定が抑制されるため、すべての必要な設定を再度宣言することが必要になります。 次の例では、親の POM ファイルのコンソールカバー率レポートを上書きし、HTML レポートに置き換えます。親の他の要素 (​``​、​``​、​``​、​``​) の値が参照されていないため、この子ファイルはこれらの要素を継承せず、デフォルト値が適用されます。 親の POM ファイルでのカバー率設定 ```xml true false 0 0 0 console html ``` カバー率レポートの形式を上書きする子の POM ファイル ```xml com.mulesoft.munit.tools munit-maven-plugin true html ``` ## [](#カバー率のセットアップ)カバー率のセットアップ 次の設定は、Maven プラグインを使用して MUnit テストを実行する場合のみ適用されます。Studio からテストを実行する場合は適用されません。詳細は、​[「Maven でのカバー率の使用」](https://docs.mulesoft.com/jp/munit/3.0/coverage-maven-concept)​を参照してください。 MUnit 2.x 以降、カバー率レポートのゴールは Maven のレポートセクションと統合されています。カバー率レポートは、​`coverage-report`​ ゴール中の Maven の ​`site`​ ライフサイクル中に生成されます。 次の設定は、Maven プラグインを使用して MUnit テストを実行する場合のみ適用されます。Studio からテストを実行する場合は適用されません。 Studio でカバー率レポートを実行するには、​[「Studio でのカバー率の使用」](https://docs.mulesoft.com/jp/munit/3.0/coverage-studio-concept)​を参照してください。 MUnit カバー率 - サンプル Maven 設定 ```xml com.mulesoft.munit.tools munit-maven-plugin ${munit.version} test test test coverage-report true false 75 50 50 console html ``` ### [](#最小カバー率レベルのセットアップ)最小カバー率レベルのセットアップ MUnit カバー率の機能の 1 つは、特定のカバー率レベルに到達しない場合にビルドを失敗させることです。 MUnit カバー率は 3 つの異なるレベルを処理します。 - **アプリケーション**​: すべてのアプリケーションの全体的なカバー率。 - **リソース**​: 個々の Mule 設定ファイルのカバー率レベル。 - **フロー**​: 各フローのイベントプロセッサーのカバー率。 必要なカバー率レベルを定義する方法は、次のとおりです。 MUnit カバー率 - 必要なカバー率 ```xml true true 75 (1) 50 50 ```
1各値はパーセントを表します。
パーセントが定義されていない場合はデフォルトで ​-1​ が設定され、そのレベルの要件が定義されていないことを示し、カバー率が低いためにビルドは失敗しません。
カバー率レベルを定義してプロパティ ​`failBuild`​ を ​**false**​ に設定し、レベルに到達していない場合、MUnit カバー率サマリーに警告が表示されます。 ```console =============================================================================== 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 カバー率 - フローとファイルの両方を無視 ```xml true true 100 100 100 flow-1 flow-2 ... flow-n mule-config-1.xml mule-config-2.xml ... mule-config-n.xml ``` ## [](#動的ポート)動的ポート MUnit 2.2 以降では ​`dynamic-port`​ グローバル要素が導入されているため、MUnit スイートレベルで動的ポートを定義できます。次に説明されているプラグイン設定の代わりにこの要素を使用すると、Maven と Studio の両方から動的ポートを設定できます。 この要素を設定する方法については、​[「動的ポート」](https://docs.mulesoft.com/jp/munit/3.0/dynamic-ports)​を参照してください。 継続的インテグレーション (CI) 環境で Mule アプリケーションをテストする場合、次のシナリオが発生することがあります。 Your application tries to open a specific port. The port is already in use. The application fails with a port binding exception. MUnit Maven プラグインには、アプリケーションで空きポートを使用する機能が組み込まれています。 MUnit 動的ポートは、Mule アプリケーションのテストを開始する前に、バインドされていないポートを探して予約するよう MUnit Maven プラグインに指示します。選択された各ポートは、設定に示されている名前でシステムプロパティに配置されます。その後、アプリケーションはプレースホルダーを使用してポート番号を取得できます。 プラグインにより選択されるポートは、​`[40000,50000]`​ の範囲から取得されます。

動的ポート機能は MUnit Maven プラグインの一部としてのみ使用できます。Anypoint Studio 内からテストを実行する場合、この機能は動作しません。

### [](#動的ポートの有効化)動的ポートの有効化 この機能を有効にするには、次のコードを MUnit Maven プラグインの ​`configuration`​ セクションに追加する必要があります。 動的ポートの設定 ```xml com.mulesoft.munit.tools munit-maven-plugin ... a.dynamic.port ... ``` アプリケーションに ​`${http.port}`​ プレースホルダーが含まれる場合、設定は次のようになります。 例 ```xml http.port ``` ### [](#アプリケーションの準備)アプリケーションの準備 プレースホルダーでは、ポートを使用するアプリケーションの一部をパラメーター化する必要があります。たとえば、Mule アプリケーションに HTTP トラフィックをリスンさせるには、次の設定を指定します。 HTTP アプリケーション ```xml ``` 以前のアプリケーションはポート ​`8081`​ で常にリスンします。これを動的に行うには、次のように変更します。 動的ポートを使用する HTTP アプリケーション ```xml (1) ```
1プレースホルダー ​${http.port}​ に注意してください。
アプリケーションをこのようにコーディングし、動的ポートの設定を適用したら、アプリケーションは、開始する各実行で異なるポートをリスンします。 ## [](#surefire-レポートの有効化)Surefire レポートの有効化 MUnit には Surefire のサポートが組み込まれています。追加の設定は必要ありませんが、必要でない場合はこれを無効にできます。 Surefire レポートの無効化 ```none false ``` レポートは ​`${project.build.directory}/surefire-reports`​ の下にあります。 デフォルトでは、これは ​`true`​ に設定されます。 ## [](#sonar-レポートの有効化)SONAR レポートの有効化 MUnit では、​`enableSonarReports`​ のデフォルト設定である ​`true`​ で SonarQube を組み込みサポートしています。それ以上の設定は必要ありません。 このレポートは ​`${project.build.directory}/sonar-reports`​ にあります。 SONAR レポートが必要なければ無効化できます。 SONAR レポートの無効化 ```none false ``` レポートは ​`${project.build.directory}/sonar-reports`​ の下にあります。 デフォルトでは、これは ​`true`​ に設定されます。 ## [](#プラグインを使用したテストの実行)プラグインを使用したテストの実行 ### [](#mule-アプリケーションの-munit-テストの実行)Mule アプリケーションの MUnit テストの実行 単一リソース Mule プロジェクトで MUnit テストを実行します。 ```none mvn clean test ``` ### [](#特定の-munit-テストスイートの実行)特定の MUnit テストスイートの実行 プロパティ ​`munit.test`​ を使用して、特定のテストスイートに属するテストのみを実行するように MUnit Maven プラグインに指示できます。 ```maven mvn clean test -Dmunit.test= ``` このパスは、​`src/test/munit`​ に対して相対的です。 プロパティ ​`munit.test`​ は、正規表現に対応しています。この式は、MUnit テストスイートファイルの名前に適用されます。正規表現の言語は Java 実装です。 次に例を示します。 ```console mvn clean test -Dmunit.test=.*my-test.* ``` この機能を利用するには、命名規則を MUnit テストスイートに追加します。 ### [](#特定の-munit-テストの実行)特定の MUnit テストの実行 1 つのテストスイートを実行するように MUnit に指示する場合と同じ方法で、テストスイート内の特定のテストを実行するように MUnit を設定できます。テスト名を追加するには、プロパティ ​`munit.test`​ に特殊文字 ​`#`​ を追加して使用する必要があります。 ```console mvn clean test -Dmunit.test=# ``` これも、正規表現に対応しています。式は、MUnit テストの属性 ​`name`​ に適用されます。次に例を示します。 ```console mvn clean test -Dmunit.test=.*my-test.*#.*test-scenario-1.* ``` 正規表現に一致しない MUnit テストスイート内のテストは、​**ignored**​ フラグが設定されます。 `pom.xml`​ 設定からこれを設定することもできます。 ```xml com.mulesoft.munit.tools munit-maven-plugin ... example-MunitTest-suite.xml ... ``` ### [](#特定のタグを使用したテストの実行)特定のタグを使用したテストの実行 1 つの特定のタグでグループ化したテストのみを実行できます。 ```console mvn clean test -Dmunit.tags= ``` `pom.xml`​ 設定からこれを設定することもできます。 ```xml com.mulesoft.munit.tools munit-maven-plugin ... exampleMunitTag ... ``` 複数のタグをカンマで区切って指定できます。 ### [](#すべてのテストをスキップ)すべてのテストをスキップ MUnit は Maven と同じメカニズムを利用します。テストをスキップするには、​`skipTests`​ パラメーターを使用する必要があります。 テストのスキップの例 ```console mvn clean package -DskipTests ``` `pom.xml`​ 設定からこれを設定することもできます。 ```xml com.mulesoft.munit.tools munit-maven-plugin ... true ... ``` ### [](#1-つのスイートが失敗した場合にテストをスキップ)1 つのスイートが失敗した場合にテストをスキップ MUnit では、1 つのテストスイートが失敗した場合に残りのテストをスキップすることができます。 ```xml com.mulesoft.munit.tools munit-maven-plugin ... true ... ``` 指定しない場合、この値はデフォルトで ​`false`​ になります。 ## [](#specify-runtime-product)ランタイム製品の指定 テストするアプリケーションをどのランタイムの種別で実行するかを指定できます。可能な値: - `MULE`​: Community Edition の場合。 - `MULE_EE`​: Enterprise Edition の場合。 ```xml com.mulesoft.munit.tools munit-maven-plugin ... MULE ... ``` ### [](#ランタイム製品バージョンの指定)ランタイム製品バージョンの指定 MUnit では、テストするアプリケーションをどのランタイムバージョンで実行するかを指定できます。 ```xml com.mulesoft.munit.tools munit-maven-plugin ... 4.2.2 ... ``` ## [](#jvm-の指定)JVM の指定 テストするアプリケーションをどの JVM (または Java 実行可能ファイル) で実行するかを指定できます。​`munit.jvm`​ パラメーターに実行可能ファイルへのパスを入力する必要があります。 JVM の指定 ```console mvn clean package -Dmunit.jvm=/path/to/jdk/bin/java ``` `pom.xml`​ 設定からこれを設定することもできます。 ```xml com.mulesoft.munit.tools munit-maven-plugin ... /path/to/jdk/bin/java ... ``` ### [](#追加の引数行)追加の引数行 JVM に追加の引数行を渡すことができます。各引数を個別の ​`argLine`​ で指定します。 引数行 ```xml com.mulesoft.munit.tools munit-maven-plugin ... -XX:MaxPermSize=512m -Xmx1024m ... ``` ### [](#環境変数)環境変数 テスト実行時に追加の環境変数を設定するには、各環境変数をそれぞれのキーと値を使用して指定できます。 追加の環境変数 ```xml com.mulesoft.munit.tools munit-maven-plugin ... exampleValue val2 ... ``` 前の例に示されているように、環境変数を使用して、​`${MY_ENV}`​ などのプレースホルダーを置き換えることができます。 ### [](#システムプロパティ変数)システムプロパティ変数 MUnit テストを正常に実行するために、特定のシステム変数の定義が必要な場合があります。 システムプロパティ変数の設定 ```xml com.mulesoft.munit.tools munit-maven-plugin ... my.property.value ... ``` 実行コンテキストに応じて、システムプロパティの値が変わる場合があります。このようなプロパティを参照する場合、その値を上書きしてテストの再現性を強化することをお勧めします。 これを行うには、Maven を使用して MUnit を実行するときに ­​`-D`​ 引数を使用できます。 ​`-D`​ 引数と共に渡された変数は、他のどのプロパティよりも優先されます。次に例を示します。 ```none -Dmy.property.key=my.property.another.value ``` ## [](#ファイルへのテスト出力のリダイレクト)ファイルへのテスト出力のリダイレクト 複数のテストを実行すると、ビルド出力が非常に複雑になり、読みづらくなる可能性があります。各テストスイートの出力をファイルにリダイレクトできます。これにより、テスト結果のみがビルド出力に残ります。それぞれのファイルで、各テストスイートの標準出力を確認できます。 これらのファイルは ​`testOutputDirectory`​ フォルダーに、​`munit.${suiteName}-output.txt`​ の命名規則に従って配置されます。​`suiteName`​ は MUnit テストフォルダーを基準とする XML ファイルの相対的な名前を表します。 特定のスイートに属さないテストの出力は、ビルド出力をクリーンな状態に維持するため印刷されませんが、Maven をデバッグモードで実行することで、これを有効にできます。 各テストスイートの出力をファイルにリダイレクトする方法 ファイルへのテスト出力のリダイレクト ```xml com.mulesoft.munit.tools munit-maven-plugin ... true ... ``` デフォルトでは、これは ​`false`​ に設定されます。 ### [](#テスト出力ディレクトリ)テスト出力ディレクトリ テスト出力ファイルを作成する場所を選択できます。指定するパスを絶対パスとしたり、Maven プレースホルダーとして記述したりできます。 絶対パスを使用したテスト出力ディレクトリ ```xml com.mulesoft.munit.tools munit-maven-plugin ... /my/absolute/path ... ``` Maven プレースホルダーを使用したテスト出力ディレクトリ ```xml ${project.build.directory}/my/output/folder ``` デフォルトでは、ファイルは ​`${project.build.directory}/munit-reports/output/`​ に作成されます。 ## [](#munit-maven-プラグイン設定リファレンス)MUnit Maven プラグイン設定リファレンス MUnit Maven プラグインでは、一連の省略可能なパラメーターを設定できます。
Table 1. Maven プラグインパラメーター
名前 型 説明

argLines

List

テスト実行で設定する追加の JVM 引数行。

coverage

設定

テスト実行で設定されるカバー率設定。

dynamicPorts

List

テスト実行で設定される動的ポート。

enableSurefireReports

boolean (ブール)

surefire 形式で MUnit テストの結果を生成するには、値を ​true​ に設定します。
デフォルト値: true​

munitTest

String (文字列)

実行する MUnit の名前。

munitTags

String (文字列)

MUnit タグの名前。これらの名前でタグ付けされたテストのみが実行されます。

skipMunitTests

boolean (ブール)

すべての MUnit テストをスキップする場合、​true​ に設定します。
デフォルト値: false​

skipAfterFailure

boolean (ブール)

1 つのテストが失敗すると、すべてのテストがスキップされます。
デフォルト値: false​

munitTestsDirectory

File (ファイル)

MUnit テストが保存されているディレクトリ。
デフォルト値: ${project.build.directory}/test-mule/munit​

runtimeVersion

String (文字列)

Mule Runtime のバージョン
Maven からテストを実行する場合、この値は ​mule-artifact.json​ ファイルの ​minMuleVersion​ パラメーターから取得されます。
Studio での MUnit テストの実行に使用する Mule Runtime バージョンを変更するには、​「Studio を使用して MUnit にパッチを適用する」​を参照してください。

runtimeProduct

String (文字列)

Runtime の種別。使用できる値は次のとおりです。

  • MULE​: Community Edition の場合。

  • MULE_EE​: Enterprise Edition の場合。

デフォルトでは、この値は ​mule-artifact.json​ ファイルの ​requiredProduct​ パラメーターから取得されます。

jvm

String (文字列)

使用する JVM (または Java 実行可能ファイルへのパス) を指定するオプション。

デフォルトでは、JVM は Maven の実行に使用される VM と同じです。

environmentVariables

Map (マップ)

テスト実行で設定される追加の環境変数。

redirectTestOutputToFile

boolean (ブール)

MUnit テストの標準出力をファイルにリダイレクトするには、値を ​true​ に設定します。
デフォルト値: false​

systemPropertyVariables

Map (マップ)

テスト実行で設定されるシステムプロパティ。

testOutputDirectory

ファイル

テスト出力が書き込まれるディレクトリ。
デフォルト値: ${project.build.directory}/munit-reports/output/​

# MUnit Release Notes These release notes are provided for MUnit. ## [](#munit-3-x)MUnit 3.x - [MUnit 3.7.5 Release Notes](https://docs.mulesoft.com/jp/release-notes/munit/munit-3.7.5-release-notes) - [MUnit 3.7.4 Release Notes](https://docs.mulesoft.com/jp/release-notes/munit/munit-3.7.4-release-notes) - [MUnit 3.7.3 Release Notes](https://docs.mulesoft.com/jp/release-notes/munit/munit-3.7.3-release-notes) - [MUnit 3.7.2 Release Notes (Deprecated)](https://docs.mulesoft.com/jp/release-notes/munit/munit-3.7.2-release-notes) - [MUnit 3.7.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/munit/munit-3.7.1-release-notes) - [MUnit 3.7.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/munit/munit-3.7.0-release-notes) - [MUnit 3.6.3 Release Notes](https://docs.mulesoft.com/jp/release-notes/munit/munit-3.6.3-release-notes) - [MUnit 3.6.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/munit/munit-3.6.2-release-notes) - [MUnit 3.6.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/munit/munit-3.6.1-release-notes) - [MUnit 3.6.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/munit/munit-3.6.0-release-notes) ## [](#munit-2-x)MUnit 2.x - [MUnit 2.3.18 Release Notes](https://docs.mulesoft.com/jp/release-notes/munit/munit-2.3.18-release-notes)
For previous versions of MUnit 1.x, 2.x, and 3.x that reached end of life, see the MUnit Release Notes Archive.
## [](#see-also)See Also - [Known Issues](https://help.salesforce.com/s/issues) # MUnit Release Notes These release notes are provided for MUnit. ## [](#munit-3-x)MUnit 3.x - [MUnit 3.7.5 Release Notes](https://docs.mulesoft.com/jp/release-notes/munit/munit-3.7.5-release-notes) - [MUnit 3.7.4 Release Notes](https://docs.mulesoft.com/jp/release-notes/munit/munit-3.7.4-release-notes) - [MUnit 3.7.3 Release Notes](https://docs.mulesoft.com/jp/release-notes/munit/munit-3.7.3-release-notes) - [MUnit 3.7.2 Release Notes (Deprecated)](https://docs.mulesoft.com/jp/release-notes/munit/munit-3.7.2-release-notes) - [MUnit 3.7.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/munit/munit-3.7.1-release-notes) - [MUnit 3.7.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/munit/munit-3.7.0-release-notes) - [MUnit 3.6.3 Release Notes](https://docs.mulesoft.com/jp/release-notes/munit/munit-3.6.3-release-notes) - [MUnit 3.6.2 Release Notes](https://docs.mulesoft.com/jp/release-notes/munit/munit-3.6.2-release-notes) - [MUnit 3.6.1 Release Notes](https://docs.mulesoft.com/jp/release-notes/munit/munit-3.6.1-release-notes) - [MUnit 3.6.0 Release Notes](https://docs.mulesoft.com/jp/release-notes/munit/munit-3.6.0-release-notes) ## [](#munit-2-x)MUnit 2.x - [MUnit 2.3.18 Release Notes](https://docs.mulesoft.com/jp/release-notes/munit/munit-2.3.18-release-notes)
For previous versions of MUnit 1.x, 2.x, and 3.x that reached end of life, see the MUnit Release Notes Archive.
## [](#see-also)See Also - [Known Issues](https://help.salesforce.com/s/issues) # MUnit イベントプロセッサー MUnit には Mule イベントのコンテンツと状況を検証、アサート、およびモックすることを目的とした一連の専用イベントプロセッサーがあり、Mule アプリケーションに対して自動テストを実行できます。 ## [](#関連情報)関連情報 - [Assertion イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/assertion-event-processor) - [Set イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/set-event-processor) - [Mock When イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/mock-event-processor) - [Verify イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/verify-event-processor) - [Spy イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/spy-event-processor) - [Storage イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/storage-event-processors) - [Queue イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/queue-processors) # MUnit イベントプロセッサー MUnit には Mule イベントのコンテンツと状況を検証、アサート、およびモックすることを目的とした一連の専用イベントプロセッサーがあり、Mule アプリケーションに対して自動テストを実行できます。 ## [](#関連情報)関連情報 - [Assertion イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/assertion-event-processor) - [Set イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/set-event-processor) - [Mock When イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/mock-event-processor) - [Verify イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/verify-event-processor) - [Spy イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/spy-event-processor) - [Storage イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/storage-event-processors) - [Queue イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/queue-processors) # MUnit テストでの FTP サーバーユーティリティの設定 次の Mule アプリケーションをテストするとします。 ```xml ``` `src/main/resources`​ にある ​`ftp.properties`​ には次のコンテンツが含まれています。 ```none ftp.host=localhost ftp.port=22 ftp.user=max ftp.password=munittest ``` username 項目は空にできません。ユーザー名-パスワードのペアがない場合は、username を ​`anonymous`​ に設定し、パスワードは設定しないでください。デフォルトでは、​`anonymous`​ 属性は ​`true`​ に設定されています。 ## [](#ftp-サーバーのインストール)FTP サーバーのインストール 1. Anypoint Studio から、​**\[Mule Palette (Mule パレット)\]**​ ビューに移動し、​**\[Search in Exchange…​ (Exchange 内を検索…​)\]**​ を見つけます。 2. 検索バーで​**「MUnit Utils FTP Server」**​ (MUnit ユーティリティ FTP サーバー) を検索し、そのモジュールをプロジェクトに追加します。 ```xml com.mulesoft.munit.utils munit-ftpserver-module 2.0.1 mule-plugin test ``` POM ファイル内の MUnit FTP サーバーアーティファクトには ​`test`​ スコープが必要です。 ## [](#ftp-サーバーの定義)FTP サーバーの定義 1. Studio キャンバスで、​**\[Global Elements (グローバル要素)\]**​ タブに移動し、​**\[MUnit FTP Server Config (MUnit FTP サーバー設定)\]**​ 要素を選択します。 2. **\[Edit (編集)\]**​ をクリックし、次の項目に入力します。
属性 Value (値)

名前

​MUnit_FTP_Server_Config​

Port (ポート)

​${ftp.port}​

Username (ユーザー名)

​${ftp.user}​

Password (パスワード)

​${ftp.password}​

Secure (セキュア)

​true​

homeDir

​${app.home}​

```xml ``` ## [](#テストの実行)テストの実行 FTP サーバーを設定したら、テストを実行できます。 ```xml ``` この FTP はすべてのユーザーを受け入れるため、ユーザーのデータベースやリストをセットアップする必要はありません。 ## [](#関連情報)関連情報 - [FTP ユーティリティ](https://docs.mulesoft.com/jp/munit/2.3/ftp-util) # MUnit テストでの FTP サーバーユーティリティの設定 次の Mule アプリケーションをテストするとします。 ```xml ``` `src/main/resources`​ にある ​`ftp.properties`​ には次のコンテンツが含まれています。 ```none ftp.host=localhost ftp.port=22 ftp.user=max ftp.password=munittest ``` username 項目は空にできません。ユーザー名-パスワードのペアがない場合は、username を ​`anonymous`​ に設定し、パスワードは設定しないでください。デフォルトでは、​`anonymous`​ 属性は ​`true`​ に設定されています。 ## [](#ftp-サーバーのインストール)FTP サーバーのインストール 1. Anypoint Studio から、​**\[Mule Palette (Mule パレット)\]**​ ビューに移動し、​**\[Search in Exchange…​ (Exchange 内を検索…​)\]**​ を見つけます。 2. 検索バーで​**「MUnit Utils FTP Server」**​ (MUnit ユーティリティ FTP サーバー) を検索し、そのモジュールをプロジェクトに追加します。 ```xml com.mulesoft.munit.utils munit-ftpserver-module 2.0.1 mule-plugin test ``` POM ファイル内の MUnit FTP サーバーアーティファクトには ​`test`​ スコープが必要です。 ## [](#ftp-サーバーの定義)FTP サーバーの定義 1. Studio キャンバスで、​**\[Global Elements (グローバル要素)\]**​ タブに移動し、​**\[MUnit FTP Server Config (MUnit FTP サーバー設定)\]**​ 要素を選択します。 2. **\[Edit (編集)\]**​ をクリックし、次の項目に入力します。
属性 Value (値)

名前

MUnit_FTP_Server_Config

Port (ポート)

${ftp.port}

Username (ユーザー名)

${ftp.user}

Password (パスワード)

${ftp.password}

Secure (セキュア)

true

homeDir

${app.home}

```xml ``` ## [](#テストの実行)テストの実行 FTP サーバーを設定したら、テストを実行できます。 ```xml ``` この FTP はすべてのユーザーを受け入れるため、ユーザーのデータベースやリストをセットアップする必要はありません。 ## [](#関連情報)関連情報 - [FTP ユーティリティ](https://docs.mulesoft.com/jp/munit/3.0/ftp-util) # MUnit テストでのデータベースサーバーユーティリティの設定 次の Mule アプリケーションをテストするとします。 ```xml SELECT * FROM jobtitlelookup WHERE jobtitleid = :id ``` `src/main/resources`​ にある ​`db.properties`​ ファイルには次のコンテンツが含まれています。 ```none db.config=Database_Config ``` 次の手順を実行するテストを作成する必要があります。 \* `jobtitlelookup`​ テーブルでデータベースサーバーを含める。 \* データベースコネクタがクエリを実行するために有効なデータベース構造を提供する。 \* データベースコネクタが使用する ​`jobid`​ 変数の値を渡す。 ## [](#munit-db-サーバーモジュールのインストール)MUnit DB サーバーモジュールのインストール 1. Anypoint Studio から、​**\[Mule Palette (Mule パレット)\]**​ ビューに移動し、​**\[Search in Exchange…​ (Exchange 内を検索…​)\]**​ を見つけます。 2. 検索バーで​**「MUnit Utils Database Server」**​ (MUnit ユーティリティデータベースサーバー) を検索し、そのモジュールをプロジェクトに追加します。 ```xml com.mulesoft.munit.utils munit-dbserver-module 2.0.2 mule-plugin test ``` POM ファイル内の MUnit DB サーバーアーティファクトには ​`test`​ スコープが必要です。 3. POM ファイルに ​`h2`​ 連動関係を追加し、​`mule-maven-plugin`​ で ​`sharedLibrary`​ としてリストします。 ```xml com.h2database h2 1.3.166 ``` ```xml org.mule.tools.maven mule-maven-plugin ${mule.maven.plugin.version} true ... com.h2database h2 ``` ## [](#munit-db-サーバーの定義)MUnit DB サーバーの定義 キャンバスの ​**\[Global Elements (グローバル要素)\]**​ から ​**\[MUnit DB Server Config (MUnit DB サーバー設定)\]**​ を使用して、データベースサーバーを定義します。 この例では、CSV ファイルを使用して DB 構造とコンテンツを定義します。 1. プロジェクトの ​`src/test/resources`​ ディレクトリに移動します。 2. 次の値を含む、​`jobtitlelookup.csv`​ という名前のファイルを作成します。 ```text JOBTITLE,EECSALARYORHOURLY,JOBTITLEID Developer,10,DEV ``` 3. **\[Global Elements (グローバル要素)\]**​ タブに移動し、​**\[MUnit DB Server Config (MUnit DB サーバー設定)\]**​ 要素を選択します。 4. **\[Edit (編集)\]**​ をクリックし、次の項目に入力します。
名前 ​MUnit_DB_Server_Config​

CSV

​jobtitlelookup.csv​

Database (データベース)

​DATABASE_NAME​

Connection string parameters (接続文字列パラメーター)

​MODE=MySQL​

```xml ``` 5. DB サーバーに接続する DB 設定を定義します。
名前 ​Test_Database_Config​

Connection (接続)

​Generic connection​

URL

​jdbc:h2:tcp://localhost/mem:DATABASE_NAME​

Driver class name (ドライバークラス名)

​org.h2.Driver​

```xml ``` 6. テストデータベース設定を取得する ​`src/test/resources`​ フォルダー内の ​`db.properties`​ ファイルを定義します。 ```none db.config=Test_Database_Config ``` ## [](#テストの実行)テストの実行 DB サーバーをインストールして設定したら、テストを実行できます。 ```xml ``` このテストは、本番コードで実行されるクエリが正しいこと、および DB サーバーによって返されるペイロードが適切なものであることを検証します。 ## [](#関連情報)関連情報 - [データベースユーティリティ](https://docs.mulesoft.com/jp/munit/2.3/db-util) # MUnit テストでのデータベースサーバーユーティリティの設定 次の Mule アプリケーションをテストするとします。 ```xml SELECT * FROM jobtitlelookup WHERE jobtitleid = :id ``` `src/main/resources`​ にある ​`db.properties`​ ファイルには次のコンテンツが含まれています。 ```none db.config=Database_Config ``` 次の手順を実行するテストを作成する必要があります。 \* `jobtitlelookup`​ テーブルでデータベースサーバーを含める。 \* Database Connector がクエリを実行するために有効なデータベース構造を提供する。 \* Database Connector が使用する ​`jobid`​ 変数の値を渡す。 ## [](#munit-db-サーバーモジュールのインストール)MUnit DB サーバーモジュールのインストール 1. Anypoint Studio から、​**\[Mule Palette (Mule パレット)\]**​ ビューに移動し、​**\[Search in Exchange…​ (Exchange 内を検索…​)\]**​ を見つけます。 2. 検索バーで​**「MUnit Utils Database Server」**​ (MUnit ユーティリティデータベースサーバー) を検索し、そのモジュールをプロジェクトに追加します。 ```xml com.mulesoft.munit.utils munit-dbserver-module 2.0.2 mule-plugin test ``` POM ファイル内の MUnit DB サーバーアーティファクトには ​`test`​ スコープが必要です。 3. POM ファイルに ​`h2`​ 連動関係を追加し、​`mule-maven-plugin`​ で ​`sharedLibrary`​ としてリストします。 ```xml com.h2database h2 1.3.166 ``` ```xml org.mule.tools.maven mule-maven-plugin ${mule.maven.plugin.version} true ... com.h2database h2 ``` ## [](#munit-db-サーバーの定義)MUnit DB サーバーの定義 キャンバスの ​**\[Global Elements (グローバル要素)\]**​ から ​**\[MUnit DB Server Config (MUnit DB サーバー設定)\]**​ を使用して、データベースサーバーを定義します。 この例では、CSV ファイルを使用して DB 構造とコンテンツを定義します。 1. プロジェクトの ​`src/test/resources`​ ディレクトリに移動します。 2. 次の値を含む、​`jobtitlelookup.csv`​ という名前のファイルを作成します。 ```text JOBTITLE,EECSALARYORHOURLY,JOBTITLEID Developer,10,DEV ``` 3. **\[Global Elements (グローバル要素)\]**​ タブに移動し、​**\[MUnit DB Server Config (MUnit DB サーバー設定)\]**​ 要素を選択します。 4. **\[Edit (編集)\]**​ をクリックし、次の項目に入力します。
名前 MUnit_DB_Server_Config

CSV

jobtitlelookup.csv

Database (データベース)

DATABASE_NAME

Connection string parameters (接続文字列パラメーター)

MODE=MySQL

```xml ``` 5. DB サーバーに接続する DB 設定を定義します。
名前 Test_Database_Config

Connection (接続)

Generic connection

URL

jdbc:h2:tcp://localhost/mem:DATABASE_NAME

Driver class name (ドライバークラス名)

org.h2.Driver

```xml ``` 6. テストデータベース設定を取得する ​`src/test/resources`​ フォルダー内の ​`db.properties`​ ファイルを定義します。 ```none db.config=Test_Database_Config ``` ## [](#テストの実行)テストの実行 DB サーバーをインストールして設定したら、テストを実行できます。 ```xml ``` このテストは、本番コードで実行されるクエリが正しいこと、および DB サーバーによって返されるペイロードが適切なものであることを検証します。 ## [](#関連情報)関連情報 - [データベースユーティリティ](https://docs.mulesoft.com/jp/munit/3.0/db-util) # MUnit テスト構造の基礎 ## [](#munit-テストスイート)MUnit テストスイート MUnit のベースファイルは、テストスイートファイルです。これは、XML ファイルで、Mule アプリケーションのプロジェクトの ​`src/test/munit`​ ディレクトリにあります。MUnit テストスイートファイルの数に上限はありません。各 MUnit テストスイートファイルは、MUnit テストのコレクションで、他の MUnit テストスイートとは独立して実行されます。 MUnit テストスイートには、次のコンポーネントのいずれかの組み合わせが含まれています。 - Before/After Suites - Before/After Test - MUnit テスト バックグラウンドでは、各 MUnit テストスイートと Mule 設定ファイルに違いはありません。複数の Mule 最上位要素 (フロー、サブフロー、スクリプトなど) を使用できます。 ### [](#munit-設定)MUnit 設定 MUnit 設定要素 (​`munit:config`​) は、MUnit スイートファイルなどの Mule 設定ファイルを識別します。 ```xml ``` #### [](#スイートの無視)スイートの無視 スイート全体の実行を無視するには、設定の ​`ignore`​ 属性を使用します。 ```xml ``` #### [](#最小-mule-バージョン)最小 Mule バージョン Mule バージョンが特定のバージョン以降である場合にスイートを実行するように指定するには、設定の ​`minMuleVersion`​ 属性を使用します。 ```xml ``` ## [](#munit-test)MUnit テスト MUnit テストは、MUnit テストスイートの基本的なプロセッサーです。これは、試行する各テストシナリオを表します。 MUnit テストは、3 つのスコープに分かれています。
スコープ 説明

動作

Behavior スコープは、テストロジックを実行する前にすべての前提条件を設定します。

Execution

Execution スコープには、次のスコープを実行する前にすべてのプロセスが終了するまで待機するテストロジックがあります。

検証

Validation スコープには、Execution スコープの結果に関連するすべての検証があります。

これらのスコープは省略可能です。 ```xml > ``` ![munit-test](/mulesoft/current/ja-jp/munit/2.3/_images/munit-test-concept-9c736.png) Figure 1. Studio での MUnit テストの表現 ### [](#munit-テストリファレンス)MUnit テストリファレンス
名前 説明

name

テストの名前を定義します。名前は、テストスイート内で一意である必要があります。
この属性は必須です。

description

テストするシナリオを説明します。

ignore

テストを無視する必要があるかどうかを定義します。存在しない場合、テストは無視されません。

tags

テストに割り当てるタグのカンマ区切りリスト。

expectedErrorType

このテストの実行後に受け取る必要があるエラー種別を定義します。

expectedException

このテストの実行後に受け取る必要がある例外を定義します。

expectedErrorDescription

このテストの実行後に受け取る必要があるエラーの説明を定義します。

timeOut

テストが失敗するまでの最大実行時間 (ミリ秒) を定義します。

#### [](#munit-テストの説明属性)MUnit テストの説明属性 MUnit では、テストの説明を作成する必要があります。テストするシナリオの内容を反映する有益な説明を作成することが理想的です。この説明は、テストを実行する前のテストコンソールやレポートに表示されます。正確に内容が反映された説明ほど、読みやすく、エラーのトラブルシューティングが容易になります。 #### [](#テストの無視)テストの無視 テストを停止しなければならない場合があります。どのような原因 (テストの失敗や不都合な副作用) でも関係ありません。MUnit では、特定のテストを無視できるため、コードを手動でコメントアウトする必要はありません。 任意のテストを無視するには、ブール型の ignore をテスト定義に追加します。 ```xml ``` ignore 属性のデフォルト値は ​`false`​ です。 Anypoint Studio では、​**\[Ignore Test (テストを無視)\]**​ オプションをオンにできます。 ![ignore-test](/mulesoft/current/ja-jp/munit/2.3/_images/munit-test-concept-de4c9.png) 現在の Mule バージョンまたは現在のオペレーティングシステムに基づいてテストを無視する式を使用することもできます。 オペレーティングシステムに基づくテストの無視 ```xml ``` Mule Runtime Engine バージョンに基づくテストの無視 ```xml ``` このテストは、Mule バージョンが ​`4.1.4`​ より前の場合に無視されます。他にも、​`muleVersionEqualTo`​ や ​`muleVersionNewerThan`​ などの関数があります。 #### [](#タイムアウト属性のテスト)タイムアウト属性のテスト 2 分経過しても完了しない場合、各 MUnit テストは自動的に失敗します。​`timeOut`​ 属性を使用して、テストが失敗するまでのカスタム最大実行時間 (ミリ秒) を定義します。 ```xml .... ``` #### [](#タグ属性のテスト)タグ属性のテスト MUnit では、テストにタグを付けて、特定のタグのテストを実行できます。次に例を示します。 ```xml … ``` ![test-tags](/mulesoft/current/ja-jp/munit/2.3/_images/munit-test-concept-c2d9f.png) Figure 2. Anypoint Studio では、適切な項目でタグを定義できます。 #### [](#munit-テストの想定されるエラーおよび例外属性)MUnit テストの想定されるエラーおよび例外属性 テストしているフローまたはサブフローが失敗して、特定のエラーをスローするかどうかを検証したいとします。MUnit では、次のように属性 ​`expectedErrorType`​、​`expectException`​、​`expectedErrorDescription`​ を追加できます。 ```xml ... ``` ![munit test concept e7280](/mulesoft/current/ja-jp/munit/2.3/_images/munit-test-concept-e7280.png) Figure 3. Anypoint Studio での視覚表現 - `expectedErrorType`​ 属性では、テスト対象アプリケーション内で定義されているエラー ID を想定しています。 この属性では、アプリケーション内で定義されているエラー種別がスローされるかどうかを検証できます。アプリケーションに存在しない ​`errorType`​ を定義すると、テストは実行されません。 ```xml ... ``` このエラー種別のテストでは、FTP 操作で ​`FTP:ILLEGAL_PATH`​ エラーがスローされることを想定しています。 どのフローも FTP Connector を使用していない場合、このエラー種別がアプリケーション内で定義されていないため、テストは実行されません。 Mule Runtime に属する ErrorTypes は、類型化する必要はありません。たとえば、​`MULE:RETRY_EXHAUSTED`​ は、単純に ​`RETRY_EXHAUSTED`​ として定義できます。 - 属性 ​`expectException`​ では、リテラル例外クラス名を想定しています。 想定している例外の正規クラス名を指定する必要があります。その後、MUnit はスローされた例外の根本原因が、想定しているクラス名の種類とまったく同じであるかどうかを検証します。 ```xml ... ``` 例外を想定するテストを定義したが、何もスローされない場合、テストは即座に失敗します。 - 属性 expectedErrorDescription は、エラーの説明を想定しています。 この属性では、スローされたエラーの説明が想定されるエラーの説明と同じか、スローされたエラーの説明に想定されるエラーの説明が含まれているかどうかを検証できます。エラーを想定するテストを定義したが、何もスローされない場合や、スローされたエラーの説明が一致しない場合、テストは即座に失敗します。 ```xml ... ``` ## [](#before-および-after-スコープ)Before および After スコープ 他のテストフレームワークと同様に、MUnit では MUnit テストまたは MUnit テストスイート全体の実行の前後に実行する処理やアクションを追加できる一連のスコープが提供されます。 - Before および After Suite スコープ。 - Before および After Test スコープ。 各コンポーネントの ID 項目は、すべてのアプリケーションで一意である必要があります。Before および After スコープは、それらの間で同じ名前を共有することも、アプリケーションのフローと同じ名前を持つこともできません。 詳細は、​[「Before/After スコープ」](https://docs.mulesoft.com/jp/munit/2.3/before-after-scopes-reference)​リファレンスを参照してください。 # MUnit テスト構造の基礎 ## [](#munit-テストスイート)MUnit テストスイート MUnit のベースファイルは、テストスイートファイルです。これは、XML ファイルで、Mule アプリケーションのプロジェクトの ​`src/test/munit`​ ディレクトリにあります。MUnit テストスイートファイルの数に上限はありません。各 MUnit テストスイートファイルは、MUnit テストのコレクションで、他の MUnit テストスイートとは独立して実行されます。 MUnit テストスイートには、次のコンポーネントのいずれかの組み合わせが含まれています。 - Before/After Suites - Before/After Test - MUnit テスト バックグラウンドでは、各 MUnit テストスイートと Mule 設定ファイルに違いはありません。複数の Mule 最上位要素 (フロー、サブフロー、スクリプトなど) を使用できます。 ### [](#munit-設定)MUnit 設定 MUnit 設定要素 (​`munit:config`​) は、MUnit スイートファイルなどの Mule 設定ファイルを識別します。 ```xml ``` #### [](#スイートの無視)スイートの無視 スイート全体の実行を無視するには、設定の ​`ignore`​ 属性を使用します。 ```xml ``` #### [](#最小-mule-バージョン)最小 Mule バージョン Mule バージョンが特定のバージョン以降である場合にスイートを実行するように指定するには、設定の ​`minMuleVersion`​ 属性を使用します。 ```xml ``` ## [](#munit-test)MUnit テスト MUnit テストは、MUnit テストスイートの基本的なプロセッサーです。これは、試行する各テストシナリオを表します。 MUnit テストは、3 つのスコープに分かれています。
スコープ 説明

Behavior

Behavior スコープは、テストロジックを実行する前にすべての前提条件を設定します。

Execution

Execution スコープには、次のスコープを実行する前にすべてのプロセスが終了するまで待機するテストロジックがあります。

検証

Validation スコープには、Execution スコープの結果に関連するすべての検証があります。

これらのスコープは省略可能です。 ```xml > ``` ![munit-test](/mulesoft/current/ja-jp/munit/3.0/_images/munit-test-concept-9c736.png) Figure 1. Studio での MUnit テストの表現 ### [](#munit-テストリファレンス)MUnit テストリファレンス
名前 説明

name

テストの名前を定義します。名前は、テストスイート内で一意である必要があります。
この属性は必須です。

description

テストするシナリオを説明します。

ignore

テストを無視する必要があるかどうかを定義します。存在しない場合、テストは無視されません。

tags

テストに割り当てるタグのカンマ区切りリスト。

expectedErrorType

このテストの実行後に受け取る必要があるエラー種別を定義します。

expectedException

このテストの実行後に受け取る必要がある例外を定義します。

expectedErrorDescription

このテストの実行後に受け取る必要があるエラーの説明を定義します。

timeOut

テストが失敗するまでの最大実行時間 (ミリ秒) を定義します。

#### [](#munit-テストの説明属性)MUnit テストの説明属性 MUnit では、テストの説明を作成する必要があります。テストするシナリオの内容を反映する有益な説明を作成することが理想的です。この説明は、テストを実行する前のテストコンソールやレポートに表示されます。正確に内容が反映された説明ほど、読みやすく、エラーのトラブルシューティングが容易になります。 #### [](#テストの無視)テストの無視 テストを停止しなければならない場合があります。どのような原因 (テストの失敗や不都合な副作用) でも関係ありません。MUnit では、特定のテストを無視できるため、コードを手動でコメントアウトする必要はありません。 任意のテストを無視するには、ブール型の ignore をテスト定義に追加します。 ```xml ``` ignore 属性のデフォルト値は ​`false`​ です。 Anypoint Studio では、​**\[Ignore Test (テストを無視)\]**​ オプションをオンにできます。 ![ignore-test](/mulesoft/current/ja-jp/munit/3.0/_images/munit-test-concept-de4c9.png) 現在の Mule バージョンまたは現在のオペレーティングシステムに基づいてテストを無視する式を使用することもできます。 オペレーティングシステムに基づくテストの無視 ```xml ``` Mule Runtime Engine バージョンに基づくテストの無視 ```xml ``` このテストは、Mule バージョンが ​`4.1.4`​ より前の場合に無視されます。他にも、​`muleVersionEqualTo`​ や ​`muleVersionNewerThan`​ などの関数があります。 #### [](#タイムアウト属性のテスト)タイムアウト属性のテスト 2 分経過しても完了しない場合、各 MUnit テストは自動的に失敗します。​`timeOut`​ 属性を使用して、テストが失敗するまでのカスタム最大実行時間 (ミリ秒) を定義します。 ```xml .... ``` #### [](#タグ属性のテスト)タグ属性のテスト MUnit では、テストにタグを付けて、特定のタグのテストを実行できます。次に例を示します。 ```xml … ``` ![test-tags](/mulesoft/current/ja-jp/munit/3.0/_images/munit-test-concept-c2d9f.png) Figure 2. Anypoint Studio では、適切な項目でタグを定義できます。 #### [](#munit-テストの想定されるエラーおよび例外属性)MUnit テストの想定されるエラーおよび例外属性 テストしているフローまたはサブフローが失敗して、特定のエラーをスローするかどうかを検証したいとします。MUnit では、次のように属性 ​`expectedErrorType`​、​`expectException`​、​`expectedErrorDescription`​ を追加できます。 ```xml ... ``` ![munit test concept e7280](/mulesoft/current/ja-jp/munit/3.0/_images/munit-test-concept-e7280.png) Figure 3. Anypoint Studio での視覚表現 - `expectedErrorType`​ 属性では、テスト対象アプリケーション内で定義されているエラー ID を想定しています。 この属性では、アプリケーション内で定義されているエラー種別がスローされるかどうかを検証できます。アプリケーションに存在しない ​`errorType`​ を定義すると、テストは実行されません。 ```xml ... ``` このエラー種別のテストでは、FTP 操作で ​`FTP:ILLEGAL_PATH`​ エラーがスローされることを想定しています。 どのフローも FTP Connector を使用していない場合、このエラー種別がアプリケーション内で定義されていないため、テストは実行されません。 Mule Runtime に属する ErrorTypes は、類型化する必要はありません。たとえば、​`MULE:RETRY_EXHAUSTED`​ は、単純に ​`RETRY_EXHAUSTED`​ として定義できます。 - 属性 ​`expectException`​ では、リテラル例外クラス名を想定しています。 想定している例外の正規クラス名を指定する必要があります。その後、MUnit はスローされた例外の根本原因が、想定しているクラス名の種類とまったく同じであるかどうかを検証します。 ```xml ... ``` 例外を想定するテストを定義したが、何もスローされない場合、テストは即座に失敗します。 - 属性 expectedErrorDescription は、エラーの説明を想定しています。 この属性では、スローされたエラーの説明が想定されるエラーの説明と同じか、スローされたエラーの説明に想定されるエラーの説明が含まれているかどうかを検証できます。エラーを想定するテストを定義したが、何もスローされない場合や、スローされたエラーの説明が一致しない場合、テストは即座に失敗します。 ```xml ... ``` ## [](#before-および-after-スコープ)Before および After スコープ 他のテストフレームワークと同様に、MUnit では MUnit テストまたは MUnit テストスイート全体の実行の前後に実行する処理やアクションを追加できる一連のスコープが提供されます。 - Before および After Suite スコープ。 - Before および After Test スコープ。 各コンポーネントの ID 項目は、すべてのアプリケーションで一意である必要があります。Before および After スコープは、それらの間で同じ名前を共有することも、アプリケーションのフローと同じ名前を持つこともできません。 詳細は、​[「Before/After スコープ」](https://docs.mulesoft.com/jp/munit/3.0/before-after-scopes-reference)​リファレンスを参照してください。 # MUnit マッチャー MUnit マッチャーは、式の任意の値のアサーション条件を定義する一連の DataWeave 機能です。 マッチャーを定義する場合、次の例のようにプレフィックス ​`MunitTools::`​ を式に含めます。 マッチャーは、検証する条件の種別に応じてグループ化されます。 ## [](#コア値の照合)コア値の照合 コアマッチャーは、式のコア値を評価します。 - 式が null か? - 式のメディア種別またはエンコードは? - 式で false が返されるか? - 2 つの評価が成功しているか? コアマッチャー: - [nullValue()](https://docs.mulesoft.com/jp/munit/2.3/core-matchers-reference#nullvalue)​ は、式が null かどうかをチェックします。 例: ```DataWeave #[MunitTools::nullValue()] ``` - [notNullValue()](https://docs.mulesoft.com/jp/munit/2.3/core-matchers-reference#notnullvalue)​ は、式が null でないかどうかをチェックします。 例: ```DataWeave #[MunitTools::notNullValue()] ``` - [withMediaType(String)](https://docs.mulesoft.com/jp/munit/2.3/core-matchers-reference#withmediatype-string)​ は、式のメディア種別が指定された種別かどうかをチェックします。 例: ```DataWeave #[MunitTools::withMediaType('text/xml')] ``` - [withEncoding(String)](https://docs.mulesoft.com/jp/munit/2.3/core-matchers-reference#withencoding-string)​ は、式のエンコードが指定されたエンコードかどうかをチェックします。 例: ```DataWeave #[MunitTools::withEncoding('UTF-8')] ``` - [both(Matcher, Matcher)](https://docs.mulesoft.com/jp/munit/2.3/core-matchers-reference#both-matcher-matcher)​ は、指定されたマッチャーが両方とも成功しているかどうかをチェックします。 例: ```DataWeave #[MunitTools::both(MunitTools::notNullValue(), MunitTools::equalTo('example'))] ``` - [either(Matcher,Matcher)](https://docs.mulesoft.com/jp/munit/2.3/core-matchers-reference#either-matcher-matcher)​ は、1 つ以上のマッチャーが成功しているかどうかをチェックします。 例: ```DataWeave #[MunitTools::either(MunitTools::nullValue(), MunitTools::equalTo(0))] ``` - [not(Matcher)](https://docs.mulesoft.com/jp/munit/2.3/core-matchers-reference#not-matcher)​ は、指定されたマッチャーが成功していないかどうかをチェックします。 例: ```DataWeave #[MunitTools::not(MunitTools::equalTo(0))] ``` - [anyOf(Matchers\[\]​)](core-matchers-reference#anyof-matchers) は、いずれかのマッチャーが成功しているかどうかをチェックします。 例: ```DataWeave #[MunitTools::anyOf([MunitTools::notNullValue(),MunitTools::withMediaType('text/xml'),MunitTools::isEmptyString()])] ``` - [allOf(Matchers\[\]​)](core-matchers-reference#allof-matchers) は、すべてのマッチャーが成功しているかどうかをチェックします。 例: ```DataWeave #[MunitTools::allOf([MunitTools::notNullValue(),MunitTools::withMediaType('text/xml'),MunitTools::isEmptyString()])] ``` ## [](#文字列の照合)文字列の照合 文字列マッチャーは、文字列式のアサーションを実行します。 - 式に指定された文字列が含まれているか? - 式が指定された文字列で開始または終了しているか? - 式の文字列の長さが 0 になっているか? - 式の文字列が指定された文字列と一致しているか? 文字列マッチャー: - [containsString(String)](https://docs.mulesoft.com/jp/munit/2.3/string-matchers-reference#containsstring-string)​ は、式に指定された文字列が含まれているかどうかをチェックします。 例: ```DataWeave #[MunitTools::containsString('example')] ``` - [startsWith(String)](https://docs.mulesoft.com/jp/munit/2.3/string-matchers-reference#startswith-string)​ は、式が指定された文字列で開始しているかどうかをチェックします。 例: ```DataWeave #[MunitTools::startsWith('exam')] ``` - [endsWith(String)](https://docs.mulesoft.com/jp/munit/2.3/string-matchers-reference#endswith-string)​ は、式が指定された文字列で終了しているかどうかをチェックします。 例: ```DataWeave #[MunitTools::endsWith('ple')] ``` - [isEmptyString()](https://docs.mulesoft.com/jp/munit/2.3/string-matchers-reference#isemptystring)​ は、式の長さが 0 かどうかをチェックします。 例: ```DataWeave #[MunitTools::isEmptyString()] ``` - [isEmptyOrNullString()](https://docs.mulesoft.com/jp/munit/2.3/string-matchers-reference#isemptyornullstring)​ は、式が null または式の長さが 0 かどうかをチェックします。 例: ```DataWeave #[MunitTools::isEmptyOrNullString()] ``` - [equalToIgnoringCase(String)](https://docs.mulesoft.com/jp/munit/2.3/string-matchers-reference#equaltoignoringcase-string)​ は、式が指定された文字列と一致しているかどうかをチェックします (大文字と小文字の違いは無視される)。 例: ```DataWeave #[MunitTools::equalToIgnoringCase('example')] ``` - [equalToIgnoringWhiteSpace(String)](https://docs.mulesoft.com/jp/munit/2.3/string-matchers-reference#equaltoignoringwhitespace-string)​ は、式が文字列一致しているかどうかをチェックします (先頭と末尾の空白は無視され、すべての内部空白は 1 つの空白に圧縮される)。 例: ```DataWeave #[MunitTools::equalToIgnoringWhiteSpace('An Example')] ``` - [stringContainsInOrder(String, String,…​)](https://docs.mulesoft.com/jp/munit/2.3/string-matchers-reference#stringcontainsinorder-array-string)​ は、表示順序に関係なく、式に指定されたすべてのサブ文字列が含まれているかどうかをチェックします。 例: ```DataWeave is="#[MunitTools::stringContainsInOrder(['an', 'example'])]"/> ``` ## [](#比較可能な式の照合)比較可能な式の照合 比較可能なマッチャーは、指定された値に対して式を比較します。 - 式の値が指定された値よりも大きいまたは小さいか? - 式の値が特定の数値に近いか? 一部の比較可能なマッチャーは、​`Comparable`​ 型を取ります。 `Comparable`​ は、相互に比較できるすべての型を表す DataWeave 型です。許可されているプリミティブは、​`String`​、​`Number`​、​`Boolean`​、​`DateTime`​、​`LocalDateTime`​、​`LocalTime`​、​`Time`​、​`TimeZone`​ です。 比較可能なマッチャー: - [greaterThan(Comparable)](https://docs.mulesoft.com/jp/munit/2.3/comparable-matchers-reference#greaterthan-comparable)​ は、式が指定された値よりも大きいかどうかをチェックします。 例: ```DataWeave #[MunitTools::greaterThan(20)] ``` ```DataWeave #[MunitTools::greaterThan(|2017-08-09|)] ``` - [greaterThanOrEqualTo(Comparable)](https://docs.mulesoft.com/jp/munit/2.3/comparable-matchers-reference#greaterthanorequalto-comparable)​ は、式が指定された値以上かどうかをチェックします。 例: ```DataWeave #[MunitTools::greaterThanOrEqualTo(20)] ``` ```DataWeave #[MunitTools::greaterThanOrEqualTo(|2017-08-09|)] ``` - [lessThan(Comparable)](https://docs.mulesoft.com/jp/munit/2.3/comparable-matchers-reference#lessthan-comparable)​ は、式が指定された値よりも小さいかどうかをチェックします。 例: ```DataWeave #[MunitTools::lessThan(20) ``` ```DataWeave #[MunitTools::lessThan(|2017-08-09|)] ``` - [lessThanOrEqualTo(Comparable)](https://docs.mulesoft.com/jp/munit/2.3/comparable-matchers-reference#lessthanorequalto-comparable)​ は、式が指定された値以下かどうかをチェックします。 例: ```DataWeave #[MunitTools::lessThanOrEqualTo(20)] ``` ```DataWeave #[MunitTools::lessThanOrEqualTo(|2017-08-09|)] ``` - [closeTo(Number, Number)](https://docs.mulesoft.com/jp/munit/2.3/comparable-matchers-reference#closeto-number-number)​ は、式が最初の数値と 2 番目の数値で定義された範囲に収まるかどうかをチェックします。 例: ```DataWeave #[MunitTools::closeTo(1, 0.01)] ``` - [equalTo(Object)](https://docs.mulesoft.com/jp/munit/2.3/comparable-matchers-reference#equalto-object)​ は、式が指定された値と等しいかどうかをチェックします。このマッチャーは DataWeave オブジェクトも受け入れます。 例: ```DataWeave #[MunitTools::equalTo('example')] ``` ```DataWeave #[MunitTools::equalTo({example1: 1 , example2: 2}] ``` ## [](#マップとイテレーションの照合)マップとイテレーションの照合 式がデータの配列やマップの場合、イテラブルマッチャーやマップマッチャーを使用します。 - 式のマップまたは配列が空か? - 式のマップまたは配列に特定のキーが含まれているか? - 式の配列のすべての項目が特定の数値よりも大きいまたは小さいか? - 式の配列のいずれかの項目が指定された文字列で開始または終了しているか? イテラブルなマッチャーとマップマッチャー: - [everyItem(Matcher)](https://docs.mulesoft.com/jp/munit/2.3/iterable-map-matchers-reference#everyitem-matcher)​ は、式のすべての要素が指定されたマッチャーと一致しているかどうかをチェックします。このマッチャーは、配列でのみ機能します。 例: ```DataWeave #[MunitTools::everyItem(MunitTools::notNullValue())] ``` ```DataWeave #[MunitTools::everyItem(MunitTools::startsWith('a'))] ``` - [hasItem(Matcher)](https://docs.mulesoft.com/jp/munit/2.3/iterable-map-matchers-reference#hasitem-matcher)​ は、式のいずれかの要素が指定されたマッチャーと一致しているかどうかをチェックします。このマッチャーは、配列でのみ機能します。 例: ```DataWeave #[MunitTools::hasItem(MunitTools::notNullValue())] ``` ```DataWeave #[MunitTools::hasItem(MunitTools::startsWith('a'))] ``` - [hasSize(Matcher)](https://docs.mulesoft.com/jp/munit/2.3/iterable-map-matchers-reference#hassize-matcher)​ は、式のサイズが指定されたマッチャーと一致しているかどうかをチェックします。 例: ```DataWeave #[MunitTools::hasSize(MunitTools::equalTo(5))] ``` ```DataWeave #[MunitTools::hasSize(MunitTools::greaterThan(5))] ``` - [isEmpty()](https://docs.mulesoft.com/jp/munit/2.3/iterable-map-matchers-reference#isempty)​ は、式が空のコレクションかどうかをチェックします。 例: ```DataWeave #[MunitTools::isEmpty()] ``` - [hasKey(Matcher)](https://docs.mulesoft.com/jp/munit/2.3/iterable-map-matchers-reference#haskey-matcher)​ は、指定されたマッチャーと一致するキーが式に含まれているかどうかをチェックします。このマッチャーは、マップでのみ機能します。 例: ```DataWeave #[MunitTools::hasKey(MunitTools::equalTo('myKey'))] ``` ```DataWeave #[MunitTools::hasKey(MunitTools::startsWith('a'))] ``` - [hasValue(Matcher)](https://docs.mulesoft.com/jp/munit/2.3/iterable-map-matchers-reference#hasvalue-matcher)​ は、指定されたマッチャーと一致する値が式に含まれているかどうかをチェックします。このマッチャーは、マップでのみ機能します。 例: ```DataWeave #[MunitTools::hasValue(MunitTools::equalTo('myValue'))] ``` ```DataWeave #[MunitTools::hasValue(MunitTools::startsWith('a'))] ``` ## [](#関連情報)関連情報 - [コアマッチャーリファレンス](https://docs.mulesoft.com/jp/munit/2.3/core-matchers-reference) - [文字列マッチャーリファレンス](https://docs.mulesoft.com/jp/munit/2.3/string-matchers-reference) - [イテラブルおよびマップマッチャーリファレンス](https://docs.mulesoft.com/jp/munit/2.3/iterable-map-matchers-reference) - [Assert That イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/assertion-event-processor) # MUnit マッチャー MUnit マッチャーは、式の任意の値のアサーション条件を定義する一連の DataWeave 機能です。 マッチャーを定義する場合、次の例のようにプレフィックス ​`MunitTools::`​ を式に含めます。 マッチャーは、検証する条件の種別に応じてグループ化されます。 ## [](#コア値の照合)コア値の照合 コアマッチャーは、式のコア値を評価します。 - 式が null か? - 式のメディア種別またはエンコードは? - 式で false が返されるか? - 2 つの評価が成功しているか? コアマッチャー: - [nullValue()](https://docs.mulesoft.com/jp/munit/3.0/core-matchers-reference#nullvalue)​ は、式が null かどうかをチェックします。 例: ```DataWeave #[MunitTools::nullValue()] ``` - [notNullValue()](https://docs.mulesoft.com/jp/munit/3.0/core-matchers-reference#notnullvalue)​ は、式が null でないかどうかをチェックします。 例: ```DataWeave #[MunitTools::notNullValue()] ``` - [withMediaType(String)](https://docs.mulesoft.com/jp/munit/3.0/core-matchers-reference#withmediatype-string)​ は、式のメディア種別が指定された種別かどうかをチェックします。 例: ```DataWeave #[MunitTools::withMediaType('text/xml')] ``` - [withEncoding(String)](https://docs.mulesoft.com/jp/munit/3.0/core-matchers-reference#withencoding-string)​ は、式のエンコードが指定されたエンコードかどうかをチェックします。 例: ```DataWeave #[MunitTools::withEncoding('UTF-8')] ``` - [both(Matcher, Matcher)](https://docs.mulesoft.com/jp/munit/3.0/core-matchers-reference#both-matcher-matcher)​ は、指定されたマッチャーが両方とも成功しているかどうかをチェックします。 例: ```DataWeave #[MunitTools::both(MunitTools::notNullValue(), MunitTools::equalTo('example'))] ``` - [either(Matcher,Matcher)](https://docs.mulesoft.com/jp/munit/3.0/core-matchers-reference#either-matcher-matcher)​ は、1 つ以上のマッチャーが成功しているかどうかをチェックします。 例: ```DataWeave #[MunitTools::either(MunitTools::nullValue(), MunitTools::equalTo(0))] ``` - [not(Matcher)](https://docs.mulesoft.com/jp/munit/3.0/core-matchers-reference#not-matcher)​ は、指定されたマッチャーが成功していないかどうかをチェックします。 例: ```DataWeave #[MunitTools::not(MunitTools::equalTo(0))] ``` - [anyOf(Matchers\[\]​)](core-matchers-reference#anyof-matchers) は、いずれかのマッチャーが成功しているかどうかをチェックします。 例: ```DataWeave #[MunitTools::anyOf([MunitTools::notNullValue(),MunitTools::withMediaType('text/xml'),MunitTools::isEmptyString()])] ``` - [allOf(Matchers\[\]​)](core-matchers-reference#allof-matchers) は、すべてのマッチャーが成功しているかどうかをチェックします。 例: ```DataWeave #[MunitTools::allOf([MunitTools::notNullValue(),MunitTools::withMediaType('text/xml'),MunitTools::isEmptyString()])] ``` ## [](#文字列の照合)文字列の照合 文字列マッチャーは、文字列式のアサーションを実行します。 - 式に指定された文字列が含まれているか? - 式が指定された文字列で開始または終了しているか? - 式の文字列の長さが 0 になっているか? - 式の文字列が指定された文字列と一致しているか? 文字列マッチャー: - [containsString(String)](https://docs.mulesoft.com/jp/munit/3.0/string-matchers-reference#containsstring-string)​ は、式に指定された文字列が含まれているかどうかをチェックします。 例: ```DataWeave #[MunitTools::containsString('example')] ``` - [startsWith(String)](https://docs.mulesoft.com/jp/munit/3.0/string-matchers-reference#startswith-string)​ は、式が指定された文字列で開始しているかどうかをチェックします。 例: ```DataWeave #[MunitTools::startsWith('exam')] ``` - [endsWith(String)](https://docs.mulesoft.com/jp/munit/3.0/string-matchers-reference#endswith-string)​ は、式が指定された文字列で終了しているかどうかをチェックします。 例: ```DataWeave #[MunitTools::endsWith('ple')] ``` - [isEmptyString()](https://docs.mulesoft.com/jp/munit/3.0/string-matchers-reference#isemptystring)​ は、式の長さが 0 かどうかをチェックします。 例: ```DataWeave #[MunitTools::isEmptyString()] ``` - [isEmptyOrNullString()](https://docs.mulesoft.com/jp/munit/3.0/string-matchers-reference#isemptyornullstring)​ は、式が null または式の長さが 0 かどうかをチェックします。 例: ```DataWeave #[MunitTools::isEmptyOrNullString()] ``` - [equalToIgnoringCase(String)](https://docs.mulesoft.com/jp/munit/3.0/string-matchers-reference#equaltoignoringcase-string)​ は、式が指定された文字列と一致しているかどうかをチェックします (大文字と小文字の違いは無視される)。 例: ```DataWeave #[MunitTools::equalToIgnoringCase('example')] ``` - [equalToIgnoringWhiteSpace(String)](https://docs.mulesoft.com/jp/munit/3.0/string-matchers-reference#equaltoignoringwhitespace-string)​ は、式が文字列一致しているかどうかをチェックします (先頭と末尾の空白は無視され、すべての内部空白は 1 つの空白に圧縮される)。 例: ```DataWeave #[MunitTools::equalToIgnoringWhiteSpace('An Example')] ``` - [stringContainsInOrder(String, String,…​)](https://docs.mulesoft.com/jp/munit/3.0/string-matchers-reference#stringcontainsinorder-array-string)​ は、表示順序に関係なく、式に指定されたすべてのサブ文字列が含まれているかどうかをチェックします。 例: ```DataWeave is="#[MunitTools::stringContainsInOrder(['an', 'example'])]"/> ``` ## [](#比較可能な式の照合)比較可能な式の照合 比較可能なマッチャーは、指定された値に対して式を比較します。 - 式の値が指定された値よりも大きいまたは小さいか? - 式の値が特定の数値に近いか? 一部の比較可能なマッチャーは、​`Comparable`​ 型を取ります。 `Comparable`​ は、相互に比較できるすべての型を表す DataWeave 型です。許可されているプリミティブは、​`String`​、​`Number`​、​`Boolean`​、​`DateTime`​、​`LocalDateTime`​、​`LocalTime`​、​`Time`​、​`TimeZone`​ です。 比較可能なマッチャー: - [greaterThan(Comparable)](https://docs.mulesoft.com/jp/munit/3.0/comparable-matchers-reference#greaterthan-comparable)​ は、式が指定された値よりも大きいかどうかをチェックします。 例: ```DataWeave #[MunitTools::greaterThan(20)] ``` ```DataWeave #[MunitTools::greaterThan(|2017-08-09|)] ``` - [greaterThanOrEqualTo(Comparable)](https://docs.mulesoft.com/jp/munit/3.0/comparable-matchers-reference#greaterthanorequalto-comparable)​ は、式が指定された値以上かどうかをチェックします。 例: ```DataWeave #[MunitTools::greaterThanOrEqualTo(20)] ``` ```DataWeave #[MunitTools::greaterThanOrEqualTo(|2017-08-09|)] ``` - [lessThan(Comparable)](https://docs.mulesoft.com/jp/munit/3.0/comparable-matchers-reference#lessthan-comparable)​ は、式が指定された値よりも小さいかどうかをチェックします。 例: ```DataWeave #[MunitTools::lessThan(20) ``` ```DataWeave #[MunitTools::lessThan(|2017-08-09|)] ``` - [lessThanOrEqualTo(Comparable)](https://docs.mulesoft.com/jp/munit/3.0/comparable-matchers-reference#lessthanorequalto-comparable)​ は、式が指定された値以下かどうかをチェックします。 例: ```DataWeave #[MunitTools::lessThanOrEqualTo(20)] ``` ```DataWeave #[MunitTools::lessThanOrEqualTo(|2017-08-09|)] ``` - [closeTo(Number, Number)](https://docs.mulesoft.com/jp/munit/3.0/comparable-matchers-reference#closeto-number-number)​ は、式が最初の数値と 2 番目の数値で定義された範囲に収まるかどうかをチェックします。 例: ```DataWeave #[MunitTools::closeTo(1, 0.01)] ``` - [equalTo(Object)](https://docs.mulesoft.com/jp/munit/3.0/comparable-matchers-reference#equalto-object)​ は、式が指定された値と等しいかどうかをチェックします。このマッチャーは DataWeave オブジェクトも受け入れます。 例: ```DataWeave #[MunitTools::equalTo('example')] ``` ```DataWeave #[MunitTools::equalTo({example1: 1 , example2: 2}] ``` ## [](#マップとイテレーションの照合)マップとイテレーションの照合 式がデータの配列やマップの場合、イテラブルマッチャーやマップマッチャーを使用します。 - 式のマップまたは配列が空か? - 式のマップまたは配列に特定のキーが含まれているか? - 式の配列のすべての項目が特定の数値よりも大きいまたは小さいか? - 式の配列のいずれかの項目が指定された文字列で開始または終了しているか? イテラブルなマッチャーとマップマッチャー: - [everyItem(Matcher)](https://docs.mulesoft.com/jp/munit/3.0/iterable-map-matchers-reference#everyitem-matcher)​ は、式のすべての要素が指定されたマッチャーと一致しているかどうかをチェックします。このマッチャーは、配列でのみ機能します。 例: ```DataWeave #[MunitTools::everyItem(MunitTools::notNullValue())] ``` ```DataWeave #[MunitTools::everyItem(MunitTools::startsWith('a'))] ``` - [hasItem(Matcher)](https://docs.mulesoft.com/jp/munit/3.0/iterable-map-matchers-reference#hasitem-matcher)​ は、式のいずれかの要素が指定されたマッチャーと一致しているかどうかをチェックします。このマッチャーは、配列でのみ機能します。 例: ```DataWeave #[MunitTools::hasItem(MunitTools::notNullValue())] ``` ```DataWeave #[MunitTools::hasItem(MunitTools::startsWith('a'))] ``` - [hasSize(Matcher)](https://docs.mulesoft.com/jp/munit/3.0/iterable-map-matchers-reference#hassize-matcher)​ は、式のサイズが指定されたマッチャーと一致しているかどうかをチェックします。 例: ```DataWeave #[MunitTools::hasSize(MunitTools::equalTo(5))] ``` ```DataWeave #[MunitTools::hasSize(MunitTools::greaterThan(5))] ``` - [isEmpty()](https://docs.mulesoft.com/jp/munit/3.0/iterable-map-matchers-reference#isempty)​ は、式が空のコレクションかどうかをチェックします。 例: ```DataWeave #[MunitTools::isEmpty()] ``` - [hasKey(Matcher)](https://docs.mulesoft.com/jp/munit/3.0/iterable-map-matchers-reference#haskey-matcher)​ は、指定されたマッチャーと一致するキーが式に含まれているかどうかをチェックします。このマッチャーは、マップでのみ機能します。 例: ```DataWeave #[MunitTools::hasKey(MunitTools::equalTo('myKey'))] ``` ```DataWeave #[MunitTools::hasKey(MunitTools::startsWith('a'))] ``` - [hasValue(Matcher)](https://docs.mulesoft.com/jp/munit/3.0/iterable-map-matchers-reference#hasvalue-matcher)​ は、指定されたマッチャーと一致する値が式に含まれているかどうかをチェックします。このマッチャーは、マップでのみ機能します。 例: ```DataWeave #[MunitTools::hasValue(MunitTools::equalTo('myValue'))] ``` ```DataWeave #[MunitTools::hasValue(MunitTools::startsWith('a'))] ``` ## [](#関連情報)関連情報 - [コアマッチャーリファレンス](https://docs.mulesoft.com/jp/munit/3.0/core-matchers-reference) - [文字列マッチャーリファレンス](https://docs.mulesoft.com/jp/munit/3.0/string-matchers-reference) - [イテラブルおよびマップマッチャーリファレンス](https://docs.mulesoft.com/jp/munit/3.0/iterable-map-matchers-reference) - [Assert That イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/assertion-event-processor) # MUnit ユーティリティ 本番コードのテストの主要な問題の 1 つは、外部システム接続です。 MUnit には、移植可能な方法でテストを作成し、テストから外部システム接続をモックする一連のユーティリティが用意されています。
ユーティリティ 説明

ローカル環境に DB サーバーを実装して接続をテストします。

​FTP

ローカル環境に FTP サーバーを実装して接続をテストします。

テストの実行中に一時キューを管理します。

# MUnit ユーティリティ 本番コードのテストの主要な問題の 1 つは、外部システム接続です。 MUnit には、移植可能な方法でテストを作成し、テストから外部システム接続をモックする一連のユーティリティが用意されています。
ユーティリティ 説明

ローカル環境に DB サーバーを実装して接続をテストします。

FTP

ローカル環境に FTP サーバーを実装して接続をテストします。

テストの実行中に一時キューを管理します。

# MUnit 結果の読み取り このセクションでは、MUnit コンソールのログを読み取る方法について簡単に説明します。 成功したビルド ```console ============================================================ ============ Running new-test-suite.xml suite ============ ============================================================ ++++++++++++++++++++++++++++++++++++++++++++ + Running test: test-suite - Test + ++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + SUCCESS - Test test-suite finished successfully - Time elapsed: 2227ms + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ================================================================================== Number of tests run: 1 - Failed: 0 - Errors: 0 - Skipped: 0 - Time elapsed: 2241ms ================================================================================== [INFO] ==================================================================================== [INFO] MUnit Run Summary [INFO] ==================================================================================== [INFO] >> new-test-suite.xml test result: Tests: 1, Errors: 0, Failures: 0, Skipped: 0 [NOTE] [INFO] ==================================================================================== [INFO] > Tests: 1 [INFO] > Errors: 0 [INFO] > Failures: 0 [INFO] > Skipped: 0 [INFO] ==================================================================================== ``` 失敗したビルド ```console ============================================================ ============ Running new-test-suite.xml suite ============ ============================================================ ++++++++++++++++++++++++++++++++++++++++++++ + Running test: test-suite - Test + ++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + FAILURE - The test test-suite finished with a failure - Time elapsed: 2399ms + java.lang.AssertionError: Expected: "Bye World!" but: was "Hello World" at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20) at org.mule.munit.assertion.internal.AssertModule.assertThat(AssertModule.java:34) at org.mule.munit.tools.assertion.AssertOperations.assertThat(AssertOperations.java:45) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ================================================================================== Number of tests run: 1 - Failed: 1 - Errors: 0 - Skipped: 0 - Time elapsed: 2416ms ================================================================================== [INFO] ==================================================================================== [INFO] MUnit Run Summary [INFO] ==================================================================================== [INFO] >> new-test-suite.xml test result: Tests: 1, Errors: 0, Failures: 1, Skipped: 0 [INFO] --- test-suite <<< FAILED [NOTE] [INFO] ==================================================================================== [INFO] > Tests: 1 [INFO] > Errors: 0 [INFO] > Failures: 1 [INFO] > Skipped: 0 [INFO] ==================================================================================== [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 22.400 s [INFO] Finished at: 2017-11-16T14:37:32-03:00 [INFO] Final Memory: 19M/302M [INFO] ------------------------------------------------------------------------ ``` ビルドエラー ```console ============================================================ ============ Running new-test-suite.xml suite ============ ============================================================ ++++++++++++++++++++++++++++++++++++++++++++ + Running test: test-suite - Test + ++++++++++++++++++++++++++++++++++++++++++++ ERROR 2017-11-16 14:40:20,239 [[coverage].http.requester.HTTP_Request_configuration.01: [coverage].http.requester.HTTP_Request_configuration @55ccbf06 SelectorRunner] org.mule.extension.http.internal.request.HttpRequester: Error sending HTTP request to http://0.0.0.0:8081/ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + ERROR - The test test-suite finished with an error - Time elapsed: 218ms + java.util.concurrent.ExecutionException: org.mule.runtime.api.component.execution.ComponentExecutionException: org.mule.extension.http.api.error.HttpRequestFailedException: HTTP GET on resource 'http://0.0.0.0:8081/' failed: Connection refused. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ [INFO] ==================================================================================== [INFO] MUnit Run Summary [INFO] ==================================================================================== [INFO] >> new-test-suite.xml test result: Tests: 1, Errors: 1, Failures: 0, Skipped: 0 [INFO] --- test-suite <<< ERROR [NOTE] [INFO] ==================================================================================== [INFO] > Tests: 1 [INFO] > Errors: 1 [INFO] > Failures: 0 [INFO] > Skipped: 0 [INFO] ==================================================================================== [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 20.167 s [INFO] Finished at: 2017-11-16T14:40:27-03:00 [INFO] Final Memory: 25M/315M [INFO] ------------------------------------------------------------------------ ``` ## [](#関連情報)関連情報 # MUnit 結果の読み取り このセクションでは、MUnit コンソールのログを読み取る方法について簡単に説明します。 成功したビルド ```console ============================================================ ============ Running new-test-suite.xml suite ============ ============================================================ ++++++++++++++++++++++++++++++++++++++++++++ + Running test: test-suite - Test + ++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + SUCCESS - Test test-suite finished successfully - Time elapsed: 2227ms + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ================================================================================== Number of tests run: 1 - Failed: 0 - Errors: 0 - Skipped: 0 - Time elapsed: 2241ms ================================================================================== [INFO] ==================================================================================== [INFO] MUnit Run Summary [INFO] ==================================================================================== [INFO] >> new-test-suite.xml test result: Tests: 1, Errors: 0, Failures: 0, Skipped: 0 [NOTE] [INFO] ==================================================================================== [INFO] > Tests: 1 [INFO] > Errors: 0 [INFO] > Failures: 0 [INFO] > Skipped: 0 [INFO] ==================================================================================== ``` 失敗したビルド ```console ============================================================ ============ Running new-test-suite.xml suite ============ ============================================================ ++++++++++++++++++++++++++++++++++++++++++++ + Running test: test-suite - Test + ++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + FAILURE - The test test-suite finished with a failure - Time elapsed: 2399ms + java.lang.AssertionError: Expected: "Bye World!" but: was "Hello World" at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20) at org.mule.munit.assertion.internal.AssertModule.assertThat(AssertModule.java:34) at org.mule.munit.tools.assertion.AssertOperations.assertThat(AssertOperations.java:45) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ================================================================================== Number of tests run: 1 - Failed: 1 - Errors: 0 - Skipped: 0 - Time elapsed: 2416ms ================================================================================== [INFO] ==================================================================================== [INFO] MUnit Run Summary [INFO] ==================================================================================== [INFO] >> new-test-suite.xml test result: Tests: 1, Errors: 0, Failures: 1, Skipped: 0 [INFO] --- test-suite <<< FAILED [NOTE] [INFO] ==================================================================================== [INFO] > Tests: 1 [INFO] > Errors: 0 [INFO] > Failures: 1 [INFO] > Skipped: 0 [INFO] ==================================================================================== [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 22.400 s [INFO] Finished at: 2017-11-16T14:37:32-03:00 [INFO] Final Memory: 19M/302M [INFO] ------------------------------------------------------------------------ ``` ビルドエラー ```console ============================================================ ============ Running new-test-suite.xml suite ============ ============================================================ ++++++++++++++++++++++++++++++++++++++++++++ + Running test: test-suite - Test + ++++++++++++++++++++++++++++++++++++++++++++ ERROR 2017-11-16 14:40:20,239 [[coverage].http.requester.HTTP_Request_configuration.01: [coverage].http.requester.HTTP_Request_configuration @55ccbf06 SelectorRunner] org.mule.extension.http.internal.request.HttpRequester: Error sending HTTP request to http://0.0.0.0:8081/ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + ERROR - The test test-suite finished with an error - Time elapsed: 218ms + java.util.concurrent.ExecutionException: org.mule.runtime.api.component.execution.ComponentExecutionException: org.mule.extension.http.api.error.HttpRequestFailedException: HTTP GET on resource 'http://0.0.0.0:8081/' failed: Connection refused. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ [INFO] ==================================================================================== [INFO] MUnit Run Summary [INFO] ==================================================================================== [INFO] >> new-test-suite.xml test result: Tests: 1, Errors: 1, Failures: 0, Skipped: 0 [INFO] --- test-suite <<< ERROR [NOTE] [INFO] ==================================================================================== [INFO] > Tests: 1 [INFO] > Errors: 1 [INFO] > Failures: 0 [INFO] > Skipped: 0 [INFO] ==================================================================================== [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 20.167 s [INFO] Finished at: 2017-11-16T14:40:27-03:00 [INFO] Final Memory: 25M/315M [INFO] ------------------------------------------------------------------------ ``` ## [](#関連情報)関連情報 # Queue イベントプロセッサー Queue イベントプロセッサーでは、テストの実行中に一時キューを管理できます。 すべてのキューは、テストの終了直後に空になります。 ## [](#queue)Queue (キュー) 値をキューに追加します。指定しない場合、この値は ​`payload`​ から取得されます。 ```xml #[1] ``` 値を追加するキューの名前を指定できます。指定しない場合、デフォルトのキューが使用されます。 ```xml #[1] ``` ## [](#dequeue)デキュー キューの最後の要素を削除します。キューが空の場合は、要素がキューに登録されるまで待機します。 ```xml ``` 要素がキューに登録されるまで待機する場合、タイムアウトを指定できます。 ```xml ``` キュー操作のように、デキューするキューの名前を指定できます。指定しない場合、デフォルトのキューが使用されます。 ```xml ``` ## [](#キューサイズ)キューサイズ キューサイズを取得する関数。 ```xml ``` 他の操作のように、サイズを取得するキューを指定できます。 指定しない場合、デフォルトのキューが使用されます。 ```xml ``` # Queue イベントプロセッサー Queue イベントプロセッサーでは、テストの実行中に一時キューを管理できます。 すべてのキューは、テストの終了直後に空になります。 ## [](#queue)Queue (キュー) 値をキューに追加します。指定しない場合、この値は ​`payload`​ から取得されます。 ```xml #[1] ``` 値を追加するキューの名前を指定できます。指定しない場合、デフォルトのキューが使用されます。 ```xml #[1] ``` ## [](#dequeue)デキュー キューの最後の要素を削除します。キューが空の場合は、要素がキューに登録されるまで待機します。 ```xml ``` 要素がキューに登録されるまで待機する場合、タイムアウトを指定できます。 ```xml ``` キュー操作のように、デキューするキューの名前を指定できます。指定しない場合、デフォルトのキューが使用されます。 ```xml ``` ## [](#キューサイズ)キューサイズ キューサイズを取得する関数。 ```xml ``` 他の操作のように、サイズを取得するキューを指定できます。 指定しない場合、デフォルトのキューが使用されます。 ```xml ``` # Run Custom イベントプロセッサー **Run Custom イベントプロセッサー**​を使用すると、Mule イベントコンテンツをカスタムアサーションに対して確認できます。 **Run Custom プロセッサー**​をプロジェクトに追加するには、次の連動関係を ​`pom.xml`​ ファイルに追加します。 ```xml com.mulesoft.munit munit-assert ${munit.version} test ``` また、エクスポートされたリソースとしてカスタムアサーションクラスを ​`mule-artifact.json`​ ファイルに追加する必要もあります。 たとえば、Java で次のアサーションを定義できます。 ```java package org.mule.custom; import org.mule.munit.assertion.api.MunitAssertion; import org.mule.munit.assertion.api.TypedValue; public class CustomAssertion implements MunitAssertion { @Override public void execute(TypedValue expression, Object params) throws AssertionError { (1) if (!"Hello World".equals(expression.getValue())) { (2) throw new AssertionError("Error the payload is incorrect"); } } } ```
1インターフェースに 1 つのメソッドのみを実装します: public void execute(TypedValue expression, Object params) throws AssertionError​。
2カスタムロジックを実行します。この場合は、メッセージペイロードが ​Hello World​ であることを検証します。
`CustomAssertion`​ クラスは scr/test/java ディレクトリにある必要があります。 また、​**Run Custom イベントプロセッサー**​を使用してこれを実行します。 ```xml ```
1アサーション項目にカスタムアサーションの正規クラス名が含まれていて、クラスがエクスポートされている必要があります。
アプリケーションをパッケージ化するときにクラスをエクスポートするには、​`org.mule.custom`​ パッケージを ​`mule-artifact.json`​ に追加します。 ```json { "name": "mule-application", "minMuleVersion": "4.2.0", "classLoaderModelLoaderDescriptor": { "id": "mule", "attributes": { "exportedPackages": [ "org.mule.custom" ] } } } ```
パッケージ名は ​exportedPackages​ コレクションでのみ設定する必要があります。
## [](#関連情報)関連情報 - [MUnit マッチャー](https://docs.mulesoft.com/jp/munit/2.3/munit-matchers) - [Assert That イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/assertion-event-processor) - [Set イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/set-event-processor) - [Mock When イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/mock-event-processor) - [Verify イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/verify-event-processor) - [Fail イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/fail-event-processor) # Run Custom イベントプロセッサー **Run Custom イベントプロセッサー**​を使用すると、Mule イベントコンテンツをカスタムアサーションに対して確認できます。 **Run Custom プロセッサー**​をプロジェクトに追加するには、次の連動関係を ​`pom.xml`​ ファイルに追加します。 ```xml com.mulesoft.munit munit-assert ${munit.version} test ``` また、エクスポートされたリソースとしてカスタムアサーションクラスを ​`mule-artifact.json`​ ファイルに追加する必要もあります。 たとえば、Java で次のアサーションを定義できます。 ```java package org.mule.custom; import org.mule.munit.assertion.api.MunitAssertion; import org.mule.munit.assertion.api.TypedValue; public class CustomAssertion implements MunitAssertion { @Override public void execute(TypedValue expression, Object params) throws AssertionError { (1) if (!"Hello World".equals(expression.getValue())) { (2) throw new AssertionError("Error the payload is incorrect"); } } } ```
1インターフェースに 1 つのメソッドのみを実装します: public void execute(TypedValue expression, Object params) throws AssertionError​。
2カスタムロジックを実行します。この場合は、メッセージペイロードが ​Hello World​ であることを検証します。
`CustomAssertion`​ クラスは scr/test/java ディレクトリにある必要があります。 また、​**Run Custom イベントプロセッサー**​を使用してこれを実行します。 ```xml ```
1アサーション項目にカスタムアサーションの正規クラス名が含まれていて、クラスがエクスポートされている必要があります。
アプリケーションをパッケージ化するときにクラスをエクスポートするには、​`org.mule.custom`​ パッケージを ​`mule-artifact.json`​ に追加します。 ```json { "name": "mule-application", "minMuleVersion": "4.2.0", "classLoaderModelLoaderDescriptor": { "id": "mule", "attributes": { "exportedPackages": [ "org.mule.custom" ] } } } ```
パッケージ名は ​exportedPackages​ コレクションでのみ設定する必要があります。
## [](#関連情報)関連情報 - [MUnit マッチャー](https://docs.mulesoft.com/jp/munit/3.0/munit-matchers) - [Assert That イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/assertion-event-processor) - [Set イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/set-event-processor) - [Mock When イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/mock-event-processor) - [Verify イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/verify-event-processor) - [Fail イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/fail-event-processor) # Set イベントプロセッサー Set Event プロセッサーでは、Mule イベントを定義できます。 通常、このメッセージプロセッサーを MUnit テストの先頭で使用して、テストするフローに送信する最初のメッセージを定義します。 次の例は、Mule メッセージの簡単なペイロードを定義する方法を示しています。 ```xml ``` set-event には cloneOriginalEvent プロパティがあります。true に設定すると、コードで生成されたイベントが複製されます。 デフォルトでは、このプロパティの値は false です。 Set Event プロセッサーの payload 要素には次の属性があります。
属性名 説明

value​

ペイロードのメッセージの値を定義します。

encoding​

メッセージのエンコードを定義します。この属性は省略可能です。

mediaType​

メッセージの MIME タイプを定義します。この属性は省略可能です。

Set Event プロセッサーを使用して、メッセージ属性とイベント変数を定義することもできます。 ```xml ``` すべてのプロパティに同じ属性セットがあります
Table 1. プロパティメッセージプロセッサーの属性
属性名 説明

key​

設定するプロパティのキー。

value​

プロパティのコンテンツ。

encoding​

メッセージのエンコードを定義します。この属性は省略可能です。

mediaType​

メッセージの MIME タイプを定義します。この属性は省略可能です。

スコープごとにテストで必要な数のプロパティを定義できます。

同じ​キーを使用して同じスコープ内で 2 つのプロパティを定義した場合、一方のプロパティがもう一方のプロパティを上書きすることになります。

## [](#関連情報)関連情報 - [エラーのテストとモック](https://docs.mulesoft.com/jp/munit/2.3/test-mock-errors-cookbook) - [Fail イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/fail-event-processor) - [Run Custom イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/run-custom-event-processor) # Set イベントプロセッサー Set Event プロセッサーでは、Mule イベントを定義できます。 通常、このメッセージプロセッサーを MUnit テストの先頭で使用して、テストするフローに送信する最初のメッセージを定義します。 次の例は、Mule メッセージの簡単なペイロードを定義する方法を示しています。 ```xml ``` set-event には cloneOriginalEvent プロパティがあります。true に設定すると、コードで生成されたイベントが複製されます。 デフォルトでは、このプロパティの値は false です。 Set Event プロセッサーの payload 要素には次の属性があります。
属性名 説明

value

ペイロードのメッセージの値を定義します。

encoding

メッセージのエンコードを定義します。この属性は省略可能です。

mediaType

メッセージの MIME タイプを定義します。この属性は省略可能です。

Set Event プロセッサーを使用して、メッセージ属性とイベント変数を定義することもできます。 ```xml ``` すべてのプロパティに同じ属性セットがあります
Table 1. プロパティメッセージプロセッサーの属性
属性名 説明

key

設定するプロパティのキー。

value

プロパティのコンテンツ。

encoding

メッセージのエンコードを定義します。この属性は省略可能です。

mediaType

メッセージの MIME タイプを定義します。この属性は省略可能です。

スコープごとにテストで必要な数のプロパティを定義できます。

同じ​キーを使用して同じスコープ内で 2 つのプロパティを定義した場合、一方のプロパティがもう一方のプロパティを上書きすることになります。

## [](#関連情報)関連情報 - [エラーのテストとモック](https://docs.mulesoft.com/jp/munit/3.0/test-mock-errors-cookbook) - [Fail イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/fail-event-processor) - [Run Custom イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/run-custom-event-processor) # Sleep プロセッサー Sleep プロセッサーでは、テストを一定期間一時停止できます。このプロセッサーを使用して、フローの処理の遅延をシミュレーションできます。 ```xml ``` `time`​ スリープするまでにテストで待機する時間単位の数値。 `timeUnit`​ `time`​ 値の測定単位。 可能な値: - `MILLISECONDS`​ (デフォルト) - `MICROSECONDS`​ - `MINUTES`​ - `NANOSECONDS`​ - `SECONDS`​ - `HOURS` # Sleep プロセッサー Sleep プロセッサーでは、テストを一定期間一時停止できます。このプロセッサーを使用して、フローの処理の遅延をシミュレーションできます。 ```xml ``` `time`​ スリープするまでにテストで待機する時間単位の数値。 `timeUnit`​ `time`​ 値の測定単位。 可能な値: - `MILLISECONDS`​ (デフォルト) - `MICROSECONDS` - `MINUTES` - `NANOSECONDS` - `SECONDS` - `HOURS` # Spy イベントプロセッサー **Spy プロセッサー**​を使用すれば、イベントプロセッサーのコール前後で何が起きているかを監視できます。 これにより、たとえば、選択した Mule イベントが、特定のペイロードまたは変数を含む特定のイベントプロセッサーに達したことを検証できます。 Spy プロセッサーを設定すると、監視されているイベントプロセッサーの実行前または後に一連の手順 (通常はアサーションまたは検証) を実行するよう MUnit に指示されます。 次の設定があるとします。 ```xml ``` 任意の HTTP 要求を監視するように Spy プロセッサーを設定し、コンポーネントに達する前のペイロードが null であり、処理後にペイロードが null 以外になっていることを確認できます。 ```xml ``` また、パスが「/my/api」である任意の HTTP 要求を監視することもできます。 ```xml ``` 上記のように、このプロセッサーを使用すれば、監視するプロセッサーをコールする前後でアクションを定義できます。 ただし、Spy プロセッサーで元の Mule イベントを変更することはできません。 Spy の内部で変数や属性を設定したり、ペイロードを変更したりしても、その変更はプロセッサーの外部では存続しません。 一般に Spy プロセッサーは検証または確認のために使用する必要があります。 ## [](#関連情報)関連情報 - [MUnit イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/event-processors) # Spy イベントプロセッサー **Spy プロセッサー**​を使用すれば、イベントプロセッサーのコール前後で何が起きているかを監視できます。 これにより、たとえば、選択した Mule イベントが、特定のペイロードまたは変数を含む特定のイベントプロセッサーに達したことを検証できます。 Spy プロセッサーを設定すると、監視されているイベントプロセッサーの実行前または後に一連の手順 (通常はアサーションまたは検証) を実行するよう MUnit に指示されます。 次の設定があるとします。 ```xml ``` 任意の HTTP 要求を監視するように Spy プロセッサーを設定し、コンポーネントに達する前のペイロードが null であり、処理後にペイロードが null 以外になっていることを確認できます。 ```xml ``` また、パスが「/my/api」である任意の HTTP 要求を監視することもできます。 ```xml ``` 上記のように、このプロセッサーを使用すれば、監視するプロセッサーをコールする前後でアクションを定義できます。 ただし、Spy プロセッサーで元の Mule イベントを変更することはできません。 Spy の内部で変数や属性を設定したり、ペイロードを変更したりしても、その変更はプロセッサーの外部では存続しません。 一般に Spy プロセッサーは検証または確認のために使用する必要があります。 ## [](#関連情報)関連情報 - [MUnit イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/event-processors) # Storage イベントプロセッサー Storage プロセッサーでは、テストの実行中に一時ストレージを管理できます。 すべてのストレージは、テストの終了直後にクリアされます。 ## [](#store-operation)Store 操作 特定のキーに関連付けられている特定のデータを保存します。​`value`​ が設定されていない場合、デフォルトの ​`payload`​ になります。 ```xml #[person : { name: 'John', lastName: 'Smith' }] ``` ## [](#retrieve-operation)Retrieve 操作 特定のキーに関連付けられているデータを取得します。 ```xml ``` ## [](#remove-operation)Remove 操作 特定のキーに関連付けられているデータを削除して返します。 ```xml ``` ## [](#clear-stored-data-operation)Clear stored data 操作 保存されているすべてのデータをクリアします。 ```xml ``` # Storage イベントプロセッサー Storage プロセッサーでは、テストの実行中に一時ストレージを管理できます。 すべてのストレージは、テストの終了直後にクリアされます。 ## [](#store-operation)Store 操作 特定のキーに関連付けられている特定のデータを保存します。​`value`​ が設定されていない場合、デフォルトの ​`payload`​ になります。 ```xml #[person : { name: 'John', lastName: 'Smith' }] ``` ## [](#retrieve-operation)Retrieve 操作 特定のキーに関連付けられているデータを取得します。 ```xml ``` ## [](#remove-operation)Remove 操作 特定のキーに関連付けられているデータを削除して返します。 ```xml ``` ## [](#clear-stored-data-operation)Clear stored data 操作 保存されているすべてのデータをクリアします。 ```xml ``` # Studio での MUnit MUnit は Anypoint Studio に完全に統合されています。Studio のグラフィカルインターフェースを使用すると、以下を行うことができます。 - MUnit テストを作成して設計する。 - テストを実行する。 - テスト結果とカバー率を表示する。 - テストをデバッグする。 ## [](#関連情報)関連情報 - [API 仕様からの MUnit テストのテンプレートのスキャフォールディング](https://docs.mulesoft.com/jp/munit/2.3/munit-scaffold-test-task) # Studio での MUnit MUnit は Anypoint Studio に完全に統合されています。Studio のグラフィカルインターフェースを使用すると、以下を行うことができます。 - MUnit テストを作成して設計する。 - テストを実行する。 - テスト結果とカバー率を表示する。 - テストをデバッグする。 ## [](#関連情報)関連情報 - [API 仕様からの MUnit テストのテンプレートのスキャフォールディング](https://docs.mulesoft.com/jp/munit/3.0/munit-scaffold-test-task) # Studio でのカバー率の使用 Anypoint Studio からカバー率レポートを実行できます。 次の設定は、Studio で MUnit テストを実行する場合のみ適用されます。この設定は、CI/CD 環境で Maven からテストを実行する場合は適用されません。 Maven からカバー率レポートを実行するには、[カバー率の Maven 設定](https://docs.mulesoft.com/jp/munit/2.3/coverage-maven-concept)を参照してください。 ## [](#anypoint-studio-でのカバー率レポートの有効化)Anypoint Studio でのカバー率レポートの有効化 \[Coverage (カバー率)\] ボタンをクリックすると、テストの対象となっているフロー、およびそれらのフロー内のイベントプロセッサーの割合を確認できます。 ![\[MUnit\] セクションで強調表示された \[MUnit Coverage (MUnit のカバー率)\] タブ](_images/using-munit-coverage-in-anypoint-studio.png) \[Overall Coverage (全体のカバー率)\] の値は、MUnit テストが実行する Mule アプリケーションイベントプロセッサーの割合を表します。 **\[Generate Report (レポートの生成)\]**​ をクリックすると、MUnit テストに含まれている Mule 設定ファイル内のフローとイベントプロセッサーの詳細を表示するレポートを取得できます。 ![レポートに含まれるファイルが強調表示されています](/mulesoft/current/ja-jp/munit/2.3/_images/munit-coverage-report-in-anypoint-studio.png)
列 説明

Resource (リソース)​

Mule 設定ファイルの名前

Containers (コンテナ)

Mule 設定ファイル内のフロー数

Weight (重み)​

設定ファイル内のアプリケーションの割合
ドキュメント内のイベントプロセッサーの総数と Mule 設定ファイル内のイベントプロセッサーの数の割合

Coverage (カバー率)​

MUnit テストが実行する Mule 設定ファイル内のイベントプロセッサーの割合

さらに、それぞれの ​**\[Resource (リソース)\]**​ をクリックすると、そのリソースで実行されたイベントプロセッサーのより具体的な詳細レポートを取得できます。 ![具体的なレポートが強調表示された MUnit のカバー率レポート](/mulesoft/current/ja-jp/munit/2.3/_images/munit-granular-coverage-report-in-anypoint-studio.png)
列 説明

Name (名前)​

コンテナの名前

Type (型)​

コンテナの種別

Covered Processors (カバーされるプロセッサー)

MUnit テスト中に実行されるコンテナ内のプロセッサー

Processors (プロセッサー)​

コンテナ内のプロセッサーの総量

Coverage (カバー率)​

MUnit テストで実行されるコンテナ内のイベントプロセッサーの割合

## [](#カバー率レポートの無効化)カバー率レポートの無効化 これを選択した場合、カバー率計算をプロジェクトの実行設定から無効にして、カバー率レポートなしでフローをテストできます。 **\[Package Explorer\]**​ を右クリックし、​**\[Run As (別のユーザーとして実行)\]**​ > ​**\[Run Configurations (設定を実行)\]**​ を選択します。MUnit 実行設定ファイルを選択してスイートの設定にアクセスし、カバー率設定の ​**\[Run coverage (カバー率を実行)\]**​ オプションをオフにします。 ![MUnit 実行と \[Run coverage (カバー率を実行)\] が強調表示されています](_images/disable-munit-coverage-in-anypoint-studio.png) ## [](#munit-カバー率レポートから-xml-ファイルを除外する)MUnit カバー率レポートから XML ファイルを除外する アプリケーションをテストする際には、MUnit カバー率レポートから 1 つ以上の XML ファイルを除外できます。たとえば、品質基準を満たしていないサードパーティ XML ファイルを除外して最終的なレポートスコアを改善できます。 1. 変更するフローに移動します。 2. **\[Run (実行)\]**​ > ​**\[Run Configuration (設定を実行)\]**​ をクリックします。 3. プロジェクトの名前をクリックします。 4. **\[Ignored files (無視されたファイル)\]**​ セクションで ​**\[Add (追加)\]**​ をクリックします。 ![\[Test (テスト)\] タブで強調表示されている \[Add Ignored File (無視されたファイルを追加)\] ウィンドウ](_images/add-ignored-files.png) 5. カバー率レポートから除外する XML ファイルの名前を入力し、​**\[OK\]**​ をクリックします。 6. **\[Apply (適用)\]**​ と ​**\[Run (実行)\]**​ をクリックします。 ## [](#関連情報)関連情報 - [Coverage (カバー率)](https://docs.mulesoft.com/jp/munit/2.3/munit-coverage-report) - [カバー率の Maven 設定](https://docs.mulesoft.com/jp/munit/2.3/coverage-maven-concept) # Studio でのカバー率の使用 Anypoint Studio からカバー率レポートを実行できます。 次の設定は、Studio で MUnit テストを実行する場合のみ適用されます。この設定は、CI/CD 環境で Maven からテストを実行する場合は適用されません。 Maven からカバー率レポートを実行するには、[カバー率の Maven 設定](https://docs.mulesoft.com/jp/munit/3.0/coverage-maven-concept)を参照してください。 ## [](#anypoint-studio-でのカバー率レポートの有効化)Anypoint Studio でのカバー率レポートの有効化 \[Coverage (カバー率)\] ボタンをクリックすると、テストの対象となっているフロー、およびそれらのフロー内のイベントプロセッサーの割合を確認できます。 ![\[MUnit\] セクションで強調表示された \[MUnit Coverage (MUnit のカバー率)\] タブ](_images/using-munit-coverage-in-anypoint-studio.png) \[Overall Coverage (全体のカバー率)\] の値は、MUnit テストが実行する Mule アプリケーションイベントプロセッサーの割合を表します。 **\[Generate Report (レポートの生成)\]**​ をクリックすると、MUnit テストに含まれている Mule 設定ファイル内のフローとイベントプロセッサーの詳細を表示するレポートを取得できます。 ![レポートに含まれるファイルが強調表示されています](/mulesoft/current/ja-jp/munit/3.0/_images/munit-coverage-report-in-anypoint-studio.png)
列 説明

Resource (リソース)​

Mule 設定ファイルの名前

Containers (コンテナ)

Mule 設定ファイル内のフロー数

Weight (重み)​

設定ファイル内のアプリケーションの割合
ドキュメント内のイベントプロセッサーの総数と Mule 設定ファイル内のイベントプロセッサーの数の割合

Coverage (カバー率)​

MUnit テストが実行する Mule 設定ファイル内のイベントプロセッサーの割合

さらに、それぞれの ​**\[Resource (リソース)\]**​ をクリックすると、そのリソースで実行されたイベントプロセッサーのより具体的な詳細レポートを取得できます。 ![具体的なレポートが強調表示された MUnit のカバー率レポート](/mulesoft/current/ja-jp/munit/3.0/_images/munit-granular-coverage-report-in-anypoint-studio.png)
列 説明

Name (名前)​

コンテナの名前

Type (種別)​

コンテナの種別

Covered Processors (カバーされるプロセッサー)

MUnit テスト中に実行されるコンテナ内のプロセッサー

Processors (プロセッサー)​

コンテナ内のプロセッサーの総量

Coverage (カバー率)​

MUnit テストで実行されるコンテナ内のイベントプロセッサーの割合

## [](#カバー率レポートの無効化)カバー率レポートの無効化 これを選択した場合、カバー率計算をプロジェクトの実行設定から無効にして、カバー率レポートなしでフローをテストできます。 **\[Package Explorer\]**​ を右クリックし、​**\[Run As (別のユーザーとして実行)\]**​ > ​**\[Run Configurations (設定を実行)\]**​ を選択します。MUnit 実行設定ファイルを選択してスイートの設定にアクセスし、カバー率設定の ​**\[Run coverage (カバー率を実行)\]**​ オプションをオフにします。 ![MUnit 実行と \[Run coverage (カバー率を実行)\] が強調表示されています](_images/disable-munit-coverage-in-anypoint-studio.png) ## [](#munit-カバー率レポートから-xml-ファイルを除外する)MUnit カバー率レポートから XML ファイルを除外する アプリケーションをテストする際には、MUnit カバー率レポートから 1 つ以上の XML ファイルを除外できます。たとえば、品質基準を満たしていないサードパーティ XML ファイルを除外して最終的なレポートスコアを改善できます。 1. 変更するフローに移動します。 2. **\[Run (実行)\]**​ > ​**\[Run Configuration (設定を実行)\]**​ をクリックします。 3. プロジェクトの名前をクリックします。 4. **\[Ignored files (無視されたファイル)\]**​ セクションで ​**\[Add (追加)\]**​ をクリックします。 ![\[Test (テスト)\] タブで強調表示されている \[Add Ignored File (無視されたファイルを追加)\] ウィンドウ](_images/add-ignored-files.png) 5. カバー率レポートから除外する XML ファイルの名前を入力し、​**\[OK\]**​ をクリックします。 6. **\[Apply (適用)\]**​ と ​**\[Run (実行)\]**​ をクリックします。 ## [](#関連情報)関連情報 - [Coverage (カバー率)](https://docs.mulesoft.com/jp/munit/3.0/munit-coverage-report) - [カバー率の Maven 設定](https://docs.mulesoft.com/jp/munit/3.0/coverage-maven-concept) # Studio のテストレコーダー テストレコーダーを使用すると、処理フローを記録してから、取得されたイベントに基づいてユニットテストを設定できます。 テストレコーダーは、Anypoint Studio でアプリケーションの実行中に実際のデータを取得します。フロー実行を取得することで、MUnit では自動的に MUnit テストが生成され、ユーザーはテストに必要なモックやアサーションを設定できます。完全な実例は、​[「Exchange からのテストの記録の例」](https://docs.mulesoft.com/jp/munit/2.3/test-recorder-examples)​を参照してください。 ## [](#互換性)互換性 次の表に、テストレコーダーを使用するのに必要な製品バージョンを示します。
Product バージョン

Anypoint Studio

7.5.0 以降

MUnit

2.2.5 以降

MUnit Anypoint Studio プラグイン

2.5.0 以降

Mule Runtime Engine

4.3.0 以降

## [](#制限事項)制限事項 MUnit テストを作成するときに、テストレコーダーには次の制限があります。 - フローの内部で Mule エラーが発生する場合や、受信イベントにすでにエラーが存在する場合、それらが ​**on error continue**​ エラーハンドラーで制御される場合であっても、フローのテストは作成できません。 - 記録されたフローの実行は正常に終了しますが、アプリケーションが停止されているため、結果は宛先に到達しません。 - `spy`​ プロセッサーまたは ​`assert`​ プロセッサーでランダムデータ、時間に依存する情報 (タイムスタンプなど)、並列プロセスの結果の値をアサートするように設定すると、それらの値は実行するたびに変化するため、テストを実行するたびに検証が失敗します。 - 並列プロセスの結果の値をモックすると、テスト内の後続のプロセッサーの実行で実際のデータとモックされたデータが混在します。 - レコーダーは、フロー内での再帰やループなどのデータ反復をサポートしていますが、テスト対象のデータの構造が反復内で変化するケースはサポートしていません。 - レコーダーは、​`foreach`​ プロセッサーの前または内部のメッセージのモックはサポートしていません。 - テストレコーダーを使用してフローに対するテストを生成する場合、フローに含まれているパラメーターしかモックできません。テストレコーダー UI を使用して、サブフローまたは参照されるフローのパラメーターをモックすることはできません。プロジェクトで他のプロセスのサブフローのパラメーターをモックする必要がある場合は、テストの作成後にモック元のコンポーネントを変更できます。 ## [](#関連情報)関連情報 - [Exchange からのテストの記録の例](https://docs.mulesoft.com/jp/munit/2.3/test-recorder-examples) - [Foreach プロセッサーの前および内部のメッセージのモック](https://docs.mulesoft.com/jp/munit/2.3/mock-before-after-foreach-cookbook) # Studio のテストレコーダー テストレコーダーを使用すると、処理フローを記録してから、取得されたイベントに基づいてユニットテストを設定できます。 テストレコーダーは、Anypoint Studio でアプリケーションの実行中に実際のデータを取得します。フロー実行を取得することで、MUnit では自動的に MUnit テストが生成され、ユーザーはテストに必要なモックやアサーションを設定できます。完全な実例は、​[「Exchange からのテストの記録の例」](https://docs.mulesoft.com/jp/munit/3.0/test-recorder-examples)​を参照してください。 ## [](#互換性)互換性 次の表に、テストレコーダーを使用するのに必要な製品バージョンを示します。
製品 バージョン

Anypoint Studio

7.5.0 以降

MUnit

2.2.5 以降

MUnit Anypoint Studio プラグイン

2.5.0 以降

Mule Runtime Engine

4.3.0 以降

## [](#制限事項)制限事項 MUnit テストを作成するときに、テストレコーダーには次の制限があります。 - フローの内部で Mule エラーが発生する場合や、受信イベントにすでにエラーが存在する場合、それらが ​**on error continue**​ エラーハンドラーで制御される場合であっても、フローのテストは作成できません。 - 記録されたフローの実行は正常に終了しますが、アプリケーションが停止されているため、結果は宛先に到達しません。 - `spy`​ プロセッサーまたは ​`assert`​ プロセッサーでランダムデータ、時間に依存する情報 (タイムスタンプなど)、並列プロセスの結果の値をアサートするように設定すると、それらの値は実行するたびに変化するため、テストを実行するたびに検証が失敗します。 - 並列プロセスの結果の値をモックすると、テスト内の後続のプロセッサーの実行で実際のデータとモックされたデータが混在します。 - レコーダーは、フロー内での再帰やループなどのデータ反復をサポートしていますが、テスト対象のデータの構造が反復内で変化するケースはサポートしていません。 - レコーダーは、​`foreach`​ プロセッサーの前または内部のメッセージのモックはサポートしていません。 - テストレコーダーを使用してフローに対するテストを生成する場合、フローに含まれているパラメーターしかモックできません。テストレコーダー UI を使用して、サブフローまたは参照されるフローのパラメーターをモックすることはできません。プロジェクトで他のプロセスのサブフローのパラメーターをモックする必要がある場合は、テストの作成後にモック元のコンポーネントを変更できます。 ## [](#関連情報)関連情報 - [Exchange からのテストの記録の例](https://docs.mulesoft.com/jp/munit/3.0/test-recorder-examples) - [Foreach プロセッサーの前および内部のメッセージのモック](https://docs.mulesoft.com/jp/munit/3.0/mock-before-after-foreach-cookbook) # Verify イベントプロセッサー Verify イベントプロセッサーでは、プロセッサーがコールされたかどうかを確認できます。 たとえば、特定のプロセッサーが、特定の属性セットを使用して、特定の回数コールされたかどうかを検証できます。 検証を定義すると、検証が成功しなかった場合にテストを失敗するよう MUnit に指示が伝えられます。 モックを作成していなくても、あらゆるプロセッサーに対して検証を定義できます。 ```xml ```
属性名 説明

eventProcessor

どのイベントプロセッサーを模擬するかを説明します。この説明は ​{name-space}:{event-processor-name}​ の形式を使用します。正規表現をサポートします。

times

(デフォルト = 1)​ イベントプロセッサーが ​N​ 回および ​N​ 回のみコールされた場合に検証が成功したとして定義します。

atLeast

イベントプロセッサーのコール回数が ​N​ 回以上の場合に検証が成功したとして定義します。

atMost

イベントプロセッサーのコール回数が ​N​ 回以下の場合に検証が成功したとして定義します。

属性 ​`times`​、​`atLeast`​、​`atMost`​ は相互に排他的です。 `eventProcessor`​ 属性は正規表現を受け入れます。たとえば、​`.*:request`​ と同じ検証を作成して、イベントプロセッサーが属している名前空間に関係なく、request という名前のイベントプロセッサーを検証できます。正規表現の言語は Java と同じです。 ## [](#関連情報)関連情報 - [Assert That イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/assertion-event-processor) - [Fail イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/fail-event-processor) - [Run Custom イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/run-custom-event-processor) - [Set イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/set-event-processor) - [Mock When イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/mock-event-processor) # Verify イベントプロセッサー Verify イベントプロセッサーでは、プロセッサーがコールされたかどうかを確認できます。 たとえば、特定のプロセッサーが、特定の属性セットを使用して、特定の回数コールされたかどうかを検証できます。 検証を定義すると、検証が成功しなかった場合にテストを失敗するよう MUnit に指示が伝えられます。 モックを作成していなくても、あらゆるプロセッサーに対して検証を定義できます。 ```xml ```
属性名 説明

eventProcessor

どのイベントプロセッサーを模擬するかを説明します。この説明は ​{name-space}:{event-processor-name}​ の形式を使用します。正規表現をサポートします。

times

(デフォルト = 1)​ イベントプロセッサーが ​N​ 回および ​N​ 回のみコールされた場合に検証が成功したとして定義します。

atLeast

イベントプロセッサーのコール回数が ​N​ 回以上の場合に検証が成功したとして定義します。

atMost

イベントプロセッサーのコール回数が ​N​ 回以下の場合に検証が成功したとして定義します。

属性 ​`times`​、​`atLeast`​、​`atMost`​ は相互に排他的です。 `eventProcessor`​ 属性は正規表現を受け入れます。たとえば、​`.*:request`​ と同じ検証を作成して、イベントプロセッサーが属している名前空間に関係なく、request という名前のイベントプロセッサーを検証できます。正規表現の言語は Java と同じです。 ## [](#関連情報)関連情報 - [Assert That イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/assertion-event-processor) - [Fail イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/fail-event-processor) - [Run Custom イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/run-custom-event-processor) - [Set イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/set-event-processor) - [Mock When イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/mock-event-processor) # イテラブルおよびマップマッチャーリファレンス ## [](#everyitemmatcher)everyItem(Matcher) 式のすべての要素が指定されたマッチャーと一致することを確認します。 例 ```xml ``` 例 ```xml ``` ## [](#hasitemobject)hasItem(Object) 式のいずれかの要素が指定されたマッチャーと一致することを確認します。 例 ```xml ``` 例 ```xml ``` ## [](#hassizematcherinteger)hasSize(Matcher|Integer) 式のサイズが指定されたマッチャーと一致することを確認します。 例 ```xml ``` 例 ```xml ``` ## [](#isempty)isEmpty() 式が空のコレクションであることを確認します。 例 ```xml ``` ## [](#haskeymatcherstring)hasKey(Matcher|String) 式に指定されたマッチャーと一致するキーが含まれることを確認します。 例 ```xml ``` 例 ```xml ``` ## [](#hasvalueobject)hasValue(Object) 式に指定されたマッチャーと一致する値が含まれることを確認します。 例 ```xml ``` 例 ```xml ``` ## [](#関連情報)関連情報 - [MUnit マッチャー](https://docs.mulesoft.com/jp/munit/2.3/munit-matchers) - [コアマッチャーリファレンス](https://docs.mulesoft.com/jp/munit/2.3/core-matchers-reference) - [文字列マッチャーリファレンス](https://docs.mulesoft.com/jp/munit/2.3/string-matchers-reference) - [比較可能マッチャーリファレンス](https://docs.mulesoft.com/jp/munit/2.3/comparable-matchers-reference) # イテラブルおよびマップマッチャーリファレンス ## [](#everyitemmatcher)everyItem(Matcher) 式のすべての要素が指定されたマッチャーと一致することを確認します。 例 ```xml ``` 例 ```xml ``` ## [](#hasitemobject)hasItem(Object) 式のいずれかの要素が指定されたマッチャーと一致することを確認します。 例 ```xml ``` 例 ```xml ``` ## [](#hassizematcherinteger)hasSize(Matcher|Integer) 式のサイズが指定されたマッチャーと一致することを確認します。 例 ```xml ``` 例 ```xml ``` ## [](#isempty)isEmpty() 式が空のコレクションであることを確認します。 例 ```xml ``` ## [](#haskeymatcherstring)hasKey(Matcher|String) 式に指定されたマッチャーと一致するキーが含まれることを確認します。 例 ```xml ``` 例 ```xml ``` ## [](#hasvalueobject)hasValue(Object) 式に指定されたマッチャーと一致する値が含まれることを確認します。 例 ```xml ``` 例 ```xml ``` ## [](#関連情報)関連情報 - [MUnit マッチャー](https://docs.mulesoft.com/jp/munit/3.0/munit-matchers) - [コアマッチャーリファレンス](https://docs.mulesoft.com/jp/munit/3.0/core-matchers-reference) - [文字列マッチャーリファレンス](https://docs.mulesoft.com/jp/munit/3.0/string-matchers-reference) - [比較可能マッチャーリファレンス](https://docs.mulesoft.com/jp/munit/3.0/comparable-matchers-reference) # エラーのテストとモック ## [](#テストでのエラーの想定)テストでのエラーの想定 フローの実行中にコンポーネントで、テスト中のユースケースで想定されるエラーがスローされることがあります。このような場合、テストで特定のエラー種別や例外が想定されていることを指定します。 たとえば、次の Mule コードを見てみましょう。 ```xml ``` キーはペイロードから取得され、キーが ​`null`​ の場合、Object Store Connector で ​`OS:INVALID_KEY`​ エラー種別のエラーがスローされます。 このケースを検証するテストは次のようになります。 ```xml ``` ## [](#エラーハンドラーのテスト)エラーハンドラーのテスト 通常、エラーはユーザーによって処理されます。ユーザーは、エラーがスローされたときに何らかのアクションを実行したり、エラーを伝播するのか、フローの実行を続行するのかを決定したりできます。 次の可能性ごとに異なるテストを実行できます。 ### [](#on-error-continue)On Error Continue たとえば、次の Mule コードを見てみましょう。 ```xml ``` `OS:INVALID_KEY`​ エラーは処理され、特定のペイロードを使用して実行が続行されます。 エラーは伝播されないため、実行が再開されてイベントを検証できます。 ```xml ``` ご覧のとおり、このケースでは、​`OS:INVALID_KEY`​ エラー種別を想定する必要はありません。 ### [](#on-error-propagate)On Error Propagate たとえば、ユーザーのコードが次のようになっている場合、 ```xml ``` `OS:INVALID_KEY`​ エラーが処理され、エラー ​`APP:NULL_KEY`​ が発生します。 発生したカスタムエラー種別でテストが失敗するため、テストでこれを想定しておく必要があります。 ```xml ``` ## [](#モックエラー)モックエラー (上記の例のように) コンポーネントのエラーを手動でトリガーしないが、特定のエラーでプロセッサーを失敗させる場合、mock-when プロセッサーの ​`error`​ パラメーターを使用できます。 たとえば、ユーザーのコードが次のようになっている場合、 ```xml ``` `HTTP:CONNECTIVITY`​ エラーで ​`http:request`​ を失敗させ、ロガーが実際に実行されたかどうかを確認するテストは次のようになります。 On Error Continue でのモックエラー ```xml ``` On Error スコープが ​`on-error-propagate`​ の場合、フローはエラーを伝播して失敗するため、検証が実行されません。そのため、テストの ​`validation`​ セクションはスキップされます。 この場合、エラーを try スコープでキャッチすれば、検証を実行できます。 On Error Propagate でのモックエラー ```xml ``` ## [](#エラーのあるイベントの設定)エラーのあるイベントの設定 エラー処理ロジックを別々のフローまたはサブフローに抽出する場合、入力イベントにエラー処理ロジックで使用できるエラーが含まれている必要があります。 たとえば、次の Mule コードを見てみましょう。 ```xml ``` 個別にサブフローをテストするには、イベントでエラーを設定する必要があります。 テストは次のようになります。 イベントのエラーの設定 ```xml ``` ## [](#関連情報)関連情報 - [Mock When イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/mock-event-processor) - [Set イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/set-event-processor) - [Verify イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/verify-event-processor) # エラーのテストとモック ## [](#テストでのエラーの想定)テストでのエラーの想定 フローの実行中にコンポーネントで、テスト中のユースケースで想定されるエラーがスローされることがあります。このような場合、テストで特定のエラー種別や例外が想定されていることを指定します。 たとえば、次の Mule コードを見てみましょう。 ```xml ``` キーはペイロードから取得され、キーが ​`null`​ の場合、Object Store Connector で ​`OS:INVALID_KEY`​ エラー種別のエラーがスローされます。 このケースを検証するテストは次のようになります。 ```xml ``` ## [](#エラーハンドラーのテスト)エラーハンドラーのテスト 通常、エラーはユーザーによって処理されます。ユーザーは、エラーがスローされたときに何らかのアクションを実行したり、エラーを伝播するのか、フローの実行を続行するのかを決定したりできます。 次の可能性ごとに異なるテストを実行できます。 ### [](#on-error-continue)On Error Continue たとえば、次の Mule コードを見てみましょう。 ```xml ``` `OS:INVALID_KEY`​ エラーは処理され、特定のペイロードを使用して実行が続行されます。 エラーは伝播されないため、実行が再開されてイベントを検証できます。 ```xml ``` ご覧のとおり、このケースでは、​`OS:INVALID_KEY`​ エラー種別を想定する必要はありません。 ### [](#on-error-propagate)On Error Propagate たとえば、ユーザーのコードが次のようになっている場合、 ```xml ``` `OS:INVALID_KEY`​ エラーが処理され、エラー ​`APP:NULL_KEY`​ が発生します。 発生したカスタムエラー種別でテストが失敗するため、テストでこれを想定しておく必要があります。 ```xml ``` ## [](#モックエラー)モックエラー (上記の例のように) コンポーネントのエラーを手動でトリガーしないが、特定のエラーでプロセッサーを失敗させる場合、mock-when プロセッサーの ​`error`​ パラメーターを使用できます。 たとえば、ユーザーのコードが次のようになっている場合、 ```xml ``` `HTTP:CONNECTIVITY`​ エラーで ​`http:request`​ を失敗させ、ロガーが実際に実行されたかどうかを確認するテストは次のようになります。 On Error Continue でのモックエラー ```xml ``` On Error スコープが ​`on-error-propagate`​ の場合、フローはエラーを伝播して失敗するため、検証が実行されません。そのため、テストの ​`validation`​ セクションはスキップされます。 この場合、エラーを try スコープでキャッチすれば、検証を実行できます。 On Error Propagate でのモックエラー ```xml ``` ## [](#エラーのあるイベントの設定)エラーのあるイベントの設定 エラー処理ロジックを別々のフローまたはサブフローに抽出する場合、入力イベントにエラー処理ロジックで使用できるエラーが含まれている必要があります。 たとえば、次の Mule コードを見てみましょう。 ```xml ``` 個別にサブフローをテストするには、イベントでエラーを設定する必要があります。 テストは次のようになります。 イベントのエラーの設定 ```xml ``` ## [](#関連情報)関連情報 - [Mock When イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/mock-event-processor) - [Set イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/set-event-processor) - [Verify イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/verify-event-processor) # カバー率の Maven 設定 MUnit 2.x 以降、カバー率レポートのゴールは Maven のレポートセクションと統合されています。カバー率レポートは、​`coverage-report`​ ゴール中の Maven の ​`site`​ ライフサイクル中に生成されます。 次の設定は、Maven プラグインを使用して MUnit テストを実行する場合のみ適用されます。Studio からテストを実行する場合は適用されません。 Studio でカバー率レポートを実行するには、​[「Studio でのカバー率の使用」](https://docs.mulesoft.com/jp/munit/2.3/coverage-studio-concept)​を参照してください。 MUnit カバー率 - サンプル Maven 設定 ```xml com.mulesoft.munit.tools munit-maven-plugin ${munit.version} test test test coverage-report true false 75 50 50 console html ``` ## [](#カバー率レポートタイプ)カバー率レポートタイプ MUnit カバー率を有効にすると、コンソールにサマリーレポートが表示されます。デフォルトでは、他のアクションは実行されません。 ```console =============================================================================== 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 カバー率 - レポート設定 ```xml true console (1) html (2) json (3) sonar (4) ```
1コンソールレポート
2HTML レポート
3JSON レポート
4SONAR レポート
設定に追加できるレポートタイプは、none (なし)、one (1 つ)、または all (すべて) です。 たとえば、JSON レポートの生成を設定するには、​`pom.xml`​ ファイルに次の設定を追加する必要があります。 ```xml true json ``` ## [](#最小カバー率レベルのセットアップ)最小カバー率レベルのセットアップ MUnit カバー率の機能の 1 つは、特定のカバー率レベルに到達しない場合にビルドを失敗させることです。 MUnit カバー率は 3 つの異なるレベルを処理します。 - **アプリケーション**​: すべてのアプリケーションの全体的なカバー率。 - **リソース**​: 個々の Mule 設定ファイルのカバー率レベル。 - **フロー**​: 各フローのイベントプロセッサーのカバー率。 必要なカバー率レベルを定義する方法は、次のとおりです。 MUnit カバー率 - 必要なカバー率 ```xml true true 75 (1) 50 50 ```
1各値はパーセントを表します。
パーセントが定義されていない場合はデフォルトで ​-1​ が設定され、そのレベルの要件が定義されていないことを示し、カバー率が低いためにビルドは失敗しません。
カバー率レベルを定義してプロパティ ​`failBuild`​ を ​**false**​ に設定し、レベルに到達していない場合、MUnit カバー率サマリーに警告が表示されます。 ```console =============================================================================== 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 カバー率 - フローとファイルの両方を無視 ```xml true true 100 100 100 flow-1 flow-2 ... flow-n mule-config-1.xml mule-config-2.xml ... mule-config-n.xml ``` ## [](#関連情報)関連情報 - [カバー率レポート](https://docs.mulesoft.com/jp/munit/2.3/munit-coverage-report) # カバー率の Maven 設定 MUnit 2.x 以降、カバー率レポートのゴールは Maven のレポートセクションと統合されています。カバー率レポートは、​`coverage-report`​ ゴール中の Maven の ​`site`​ ライフサイクル中に生成されます。 次の設定は、Maven プラグインを使用して MUnit テストを実行する場合のみ適用されます。Studio からテストを実行する場合は適用されません。 Studio でカバー率レポートを実行するには、​[「Studio でのカバー率の使用」](https://docs.mulesoft.com/jp/munit/3.0/coverage-studio-concept)​を参照してください。 MUnit カバー率 - サンプル Maven 設定 ```xml com.mulesoft.munit.tools munit-maven-plugin ${munit.version} test test test coverage-report true false 75 50 50 console html ``` ## [](#カバー率レポートタイプ)カバー率レポートタイプ MUnit カバー率を有効にすると、コンソールにサマリーレポートが表示されます。デフォルトでは、他のアクションは実行されません。 ```console =============================================================================== 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 カバー率 - レポート設定 ```xml true console (1) html (2) json (3) sonar (4) ```
1コンソールレポート
2HTML レポート
3JSON レポート
4SONAR レポート
設定に追加できるレポートタイプは、none (なし)、one (1 つ)、または all (すべて) です。 たとえば、JSON レポートの生成を設定するには、​`pom.xml`​ ファイルに次の設定を追加する必要があります。 ```xml true json ``` ## [](#最小カバー率レベルのセットアップ)最小カバー率レベルのセットアップ MUnit カバー率の機能の 1 つは、特定のカバー率レベルに到達しない場合にビルドを失敗させることです。 MUnit カバー率は 3 つの異なるレベルを処理します。 - **アプリケーション**​: すべてのアプリケーションの全体的なカバー率。 - **リソース**​: 個々の Mule 設定ファイルのカバー率レベル。 - **フロー**​: 各フローのイベントプロセッサーのカバー率。 必要なカバー率レベルを定義する方法は、次のとおりです。 MUnit カバー率 - 必要なカバー率 ```xml true true 75 (1) 50 50 ```
1各値はパーセントを表します。
パーセントが定義されていない場合はデフォルトで ​-1​ が設定され、そのレベルの要件が定義されていないことを示し、カバー率が低いためにビルドは失敗しません。
カバー率レベルを定義してプロパティ ​`failBuild`​ を ​**false**​ に設定し、レベルに到達していない場合、MUnit カバー率サマリーに警告が表示されます。 ```console =============================================================================== 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 カバー率 - フローとファイルの両方を無視 ```xml true true 100 100 100 flow-1 flow-2 ... flow-n mule-config-1.xml mule-config-2.xml ... mule-config-n.xml ``` ## [](#関連情報)関連情報 - [カバー率レポート](https://docs.mulesoft.com/jp/munit/3.0/munit-coverage-report) # コアマッチャーリファレンス ## [](#nullvalue)nullValue() 式が null であることを確認します。 例 ```xml ``` ## [](#notnullvalue)notNullValue() 式が null ではないことを検査します。 例 ```xml ``` ## [](#withmediatypestring)withMediaType(String) 式のメディア種別が指定されたものであることを確認します。 例 ```xml ``` ## [](#withencodingstring)withEncoding(String) 式のエンコーディングが指定されたものであることを確認します。 例 ```xml ``` ## [](#bothmatcher-matcher)both(Matcher, Matcher) 指定された両方のマッチャーが成功することを確認します。 例 ```xml ``` ## [](#eithermatchermatcher)either(Matcher,Matcher) 少なくとも 1 つのマッチャーが成功することを確認します。 例 ```xml ``` ## [](#notobject)not(Object) 指定されたマッチャーが成功しないかどうかを確認します。 例 ```xml ``` 例 ```xml ``` ## [](#anyofarraymatcher)anyOf(Array) いずれかのマッチャーが成功するかどうかを確認します。 例 ```xml ``` ## [](#allofarraymatcher)allOf(Array) すべてのマッチャーが成功するかどうかを確認します。 例 ```xml ``` ## [](#関連情報)関連情報 - [MUnit マッチャー](https://docs.mulesoft.com/jp/munit/2.3/munit-matchers) - [文字列マッチャーリファレンス](https://docs.mulesoft.com/jp/munit/2.3/string-matchers-reference) - [比較可能マッチャーリファレンス](https://docs.mulesoft.com/jp/munit/2.3/comparable-matchers-reference) - [イテラブルおよびマップマッチャーリファレンス](https://docs.mulesoft.com/jp/munit/2.3/iterable-map-matchers-reference) # コアマッチャーリファレンス ## [](#nullvalue)nullValue() 式が null であることを確認します。 例 ```xml ``` ## [](#notnullvalue)notNullValue() 式が null ではないことを検査します。 例 ```xml ``` ## [](#withmediatypestring)withMediaType(String) 式のメディア種別が指定されたものであることを確認します。 例 ```xml ``` ## [](#withencodingstring)withEncoding(String) 式のエンコーディングが指定されたものであることを確認します。 例 ```xml ``` ## [](#bothmatcher-matcher)both(Matcher, Matcher) 指定された両方のマッチャーが成功することを確認します。 例 ```xml ``` ## [](#eithermatchermatcher)either(Matcher,Matcher) 少なくとも 1 つのマッチャーが成功することを確認します。 例 ```xml ``` ## [](#notobject)not(Object) 指定されたマッチャーが成功しないかどうかを確認します。 例 ```xml ``` 例 ```xml ``` ## [](#anyofarraymatcher)anyOf(Array) いずれかのマッチャーが成功するかどうかを確認します。 例 ```xml ``` ## [](#allofarraymatcher)allOf(Array) すべてのマッチャーが成功するかどうかを確認します。 例 ```xml ``` ## [](#関連情報)関連情報 - [MUnit マッチャー](https://docs.mulesoft.com/jp/munit/3.0/munit-matchers) - [文字列マッチャーリファレンス](https://docs.mulesoft.com/jp/munit/3.0/string-matchers-reference) - [比較可能マッチャーリファレンス](https://docs.mulesoft.com/jp/munit/3.0/comparable-matchers-reference) - [イテラブルおよびマップマッチャーリファレンス](https://docs.mulesoft.com/jp/munit/3.0/iterable-map-matchers-reference) # スケジューラー提供元を使用したフローのテスト Scheduler コンポーネントによってトリガーされる次のフローをテストし、フローが正しくトリガーされていることを検証するには、次の手順を実行します。 ```xml ``` 1. フロー提供元を有効にします。 MUnit ではフロー提供元 (トリガーやリスナーなど) が起動されないので、テスト用にどのフロー提供元を起動するかを設定する必要があります。 次の例では、Scheduler を含むフローを有効にします。 ```xml ``` 2. Scheduler によってフロー実行がトリガーされることを検証します。 フロー内のプロセッサーがトリガーされていることを検証するには、​`munit-tools:verify-call`​ プロセッサーを使用します。 テストしたいタイミングで Scheduler が動作しない場合は、​`until-successful`​ 内部に ​`munit-tools:verify-call`​ をラップして、処理時間を短縮します。 次の例では、テスト中にペイロードが 1 回以上実行されることを 3 回検証します。 ```xml ``` ## [](#関連情報)関連情報 - [Enable Flow Sources](https://docs.mulesoft.com/jp/munit/2.3/enable-flow-sources-concept) - [Verify イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/verify-event-processor) # スケジューラー提供元を使用したフローのテスト Scheduler コンポーネントによってトリガーされる次のフローをテストし、フローが正しくトリガーされていることを検証するには、次の手順を実行します。 ```xml ``` 1. フロー提供元を有効にします。 MUnit ではフロー提供元 (トリガーやリスナーなど) が起動されないので、テスト用にどのフロー提供元を起動するかを設定する必要があります。 次の例では、Scheduler を含むフローを有効にします。 ```xml ``` 2. Scheduler によってフロー実行がトリガーされることを検証します。 フロー内のプロセッサーがトリガーされていることを検証するには、​`munit-tools:verify-call`​ プロセッサーを使用します。 テストしたいタイミングで Scheduler が動作しない場合は、​`until-successful`​ 内部に ​`munit-tools:verify-call`​ をラップして、処理時間を短縮します。 次の例では、テスト中にペイロードが 1 回以上実行されることを 3 回検証します。 ```xml ``` ## [](#関連情報)関連情報 - [Enable Flow Sources](https://docs.mulesoft.com/jp/munit/3.0/enable-flow-sources-concept) - [Verify イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/verify-event-processor) # データベース データベースサーバーに接続するコードをテストするには、ローカル環境にデータベースサーバーをインストールしてテストを実行する必要があります。また、テスト専用の外部データベースサーバーを使用することもできますが、Maven プロジェクトは移植できません。サードパーティがテストデータベースサーバーをインストールしてプロジェクトをコンパイルする必要があります。 データベース接続を容易にテストできるように、MUnit ではローカル環境にデータベースサーバーを実装できます。 ## [](#munit-db-server-module-のインストール)MUnit DB Server Module のインストール 1. Anypoint Studio から、​**\[Mule Palette (Mule パレット)\]**​、​**\[Search in Exchange…​ (Exchange 内を検索…​)\]**​ の順に移動します。 2. 検索バーで​**「MUnit Utils Database Server」**​ (MUnit ユーティリティデータベースサーバー) を検索し、そのモジュールをプロジェクトに追加します。 ```xml com.mulesoft.munit.utils munit-dbserver-module 2.0.2 mule-plugin test ``` `pom`​ ファイル内の MUnit DB サーバーアーティファクトには ​`test`​ スコープが必要です。 3. データベースに使用される ​`h2`​ 連動関係は共有ライブラリ。 `pom.xml`​ ファイルに連動関係を追加し、​`mule-maven-plugin`​ で ​`sharedLibrary`​ としてリストする必要があります。 ```xml com.h2database h2 1.3.166 ``` ```xml org.mule.tools.maven mule-maven-plugin ${mule.maven.plugin.version} true ... com.h2database h2 ``` ## [](#属性リファレンス)属性リファレンス
属性名 説明

name

この DB サーバーの設定名を定義します。この値は一意である必要があります。

database

メモリ内 DB の名前を定義します。

sqlFile

DB 構造/コンテンツを定義する SQL ファイルへのパスを指定します。このパラメーターは、起動時に DB を作成するために使用されます。詳細は、​「SQL ファイルからの DB 構造の定義」​セクションを参照してください。

csv

DB 構造/コンテンツの定義に使用されるカンマ区切りファイルのパスを指定します。このパラメーターは、起動時に DB を作成するために使用されます。詳細は、​「CSV ファイルからの DB 構造の定義」​セクションを参照してください。

connectionStringParameters

データベースへの接続文字列を定義します。セミコロンでパラメーターを連結できます。

## [](#db-構造の定義)DB 構造の定義 データベースの構造とコンテンツを定義するには、2 つの異なる方法があります。 - SQL - CSV MUnit DB サーバーは H2 に基づきます。複雑な構造、インデックス、および結合コマンドは適切に機能しない可能性があります。 ### [](#db-structure-sql)SQL ファイルからの DB 構造の定義 SQL ファイルから DB の構造とコンテンツを定義するには、有効な ANSI SQL DDL (データ定義言語) 命令のセットを指定する必要があります。 ```xml ``` ### [](#db-structure-csv)CSV ファイルからの DB 構造の定義 CSV ファイルに基づく DB 構造は次のように定義します。 - テーブルの名前はファイルの名前 (以下の例では ​`customers`​)。 - 列の名前は CSV ファイルのヘッダー。 ```xml ``` DB 構造を複数の CSV ファイルに分割することもできます。これを行うには、ファイル名を 1 つのリストにして、セミコロンで名前を区切ります。 ```xml ``` これにより、​`FILE_NAME`​ と ​`FILE_NAME_1`​ の 2 つのテーブルが作成されます。 ## [](#munit-db-サーバープロセッサー)MUnit DB サーバープロセッサー DB サーバーユーティリティには、DB サーバーとのやり取りを行うための 2 つのプロセッサーがあります。 ### [](#validate-that)Validate-That MUnit DB サーバーでは、クエリの結果が期待どおりであることを検証できます。 これを行うには、​`validate-that`​ 操作を使用します。次のように、​`results`​ プロパティを改行文字 (​`\n`​) で区切られた行を含む CSV に設定します。 ```xml ``` ### [](#execute)Execute MUnit DB サーバーでは、メモリ内データベースで命令を実行できるため、テストの前にレジストリを追加または削除したり、データが適切に保存されたかどうかを確認したりできます。 `execute`​ 操作で DB Server Connector を使用して、テーブル (​`Culinary Team Member,10,HIR`​) に新しい値を挿入します。次に、​`execute query`​ 操作で別の DB Server Connector を使用して、テーブルからすべての値 (新しく追加された値を含む) を取得し、ペイロードを保存するためにロガーコンポーネントを使用してペイロードを確認します。 ```xml ``` コンソールのロガーは次のようになります。 ```text org.mule.runtime.core.internal.processor.LoggerMessageProcessor: [{JOBTITLEID=DEV, EECSALARYORHOURLY=10, JOBTITLE=Developer}, {JOBTITLEID=HIR, EECSALARYORHOURLY=10, JOBTITLE=Culinary Team Member}] ``` ## [](#関連情報)関連情報 - [MUnit テストでの DB サーバーユーティリティの設定](https://docs.mulesoft.com/jp/munit/2.3/db-server-cookbook) # データベース データベースサーバーに接続するコードをテストするには、ローカル環境にデータベースサーバーをインストールしてテストを実行する必要があります。また、テスト専用の外部データベースサーバーを使用することもできますが、Maven プロジェクトは移植できません。サードパーティがテストデータベースサーバーをインストールしてプロジェクトをコンパイルする必要があります。 データベース接続を容易にテストできるように、MUnit ではローカル環境にデータベースサーバーを実装できます。 ## [](#munit-db-server-module-をインストールする)MUnit DB Server Module をインストールする 1. Anypoint Studio から、​**\[Mule Palette (Mule パレット)\]**​、​**\[Search in Exchange…​ (Exchange 内を検索…​)\]**​ の順に移動します。 2. 検索バーで​**「MUnit Utils Database Server」**​ (MUnit ユーティリティデータベースサーバー) を検索し、そのモジュールをプロジェクトに追加します。 ```xml com.mulesoft.munit.utils munit-dbserver-module 2.0.2 mule-plugin test ``` `pom`​ ファイル内の MUnit DB サーバーアーティファクトには ​`test`​ スコープが必要です。 3. データベースに使用される ​`h2`​ 連動関係は共有ライブラリ。 `pom.xml`​ ファイルに連動関係を追加し、​`mule-maven-plugin`​ で ​`sharedLibrary`​ としてリストする必要があります。 ```xml com.h2database h2 1.3.166 ``` ```xml org.mule.tools.maven mule-maven-plugin ${mule.maven.plugin.version} true ... com.h2database h2 ``` ## [](#属性リファレンス)属性リファレンス
属性名 説明

name

この DB サーバーの設定名を定義します。この値は一意である必要があります。

database

メモリ内 DB の名前を定義します。

sqlFile

DB 構造/コンテンツを定義する SQL ファイルへのパスを指定します。このパラメーターは、起動時に DB を作成するために使用されます。詳細は、​「SQL ファイルからの DB 構造の定義」​セクションを参照してください。

csv

DB 構造/コンテンツの定義に使用されるカンマ区切りファイルのパスを指定します。このパラメーターは、起動時に DB を作成するために使用されます。詳細は、​「CSV ファイルからの DB 構造の定義」​セクションを参照してください。

connectionStringParameters

データベースへの接続文字列を定義します。セミコロンでパラメーターを連結できます。

## [](#db-構造の定義)DB 構造の定義 データベースの構造とコンテンツを定義するには、2 つの異なる方法があります。 - SQL - CSV MUnit DB サーバーは H2 に基づきます。複雑な構造、インデックス、および結合コマンドは適切に機能しない可能性があります。 ### [](#db-structure-sql)SQL ファイルからの DB 構造の定義 SQL ファイルから DB の構造とコンテンツを定義するには、有効な ANSI SQL DDL (データ定義言語) 命令のセットを指定する必要があります。 ```xml ``` ### [](#db-structure-csv)CSV ファイルからの DB 構造の定義 CSV ファイルに基づく DB 構造は次のように定義します。 - テーブルの名前はファイルの名前 (以下の例では ​`customers`​)。 - 列の名前は CSV ファイルのヘッダー。 ```xml ``` DB 構造を複数の CSV ファイルに分割することもできます。これを行うには、ファイル名を 1 つのリストにして、セミコロンで名前を区切ります。 ```xml ``` これにより、​`FILE_NAME`​ と ​`FILE_NAME_1`​ の 2 つのテーブルが作成されます。 ## [](#munit-db-サーバープロセッサー)MUnit DB サーバープロセッサー DB サーバーユーティリティには、DB サーバーとのやり取りを行うための 2 つのプロセッサーがあります。 ### [](#validate-that)Validate-That MUnit DB サーバーでは、クエリの結果が期待どおりであることを検証できます。 これを行うには、​`validate-that`​ 操作を使用します。次のように、​`results`​ プロパティを改行文字 (​`\n`​) で区切られた行を含む CSV に設定します。 ```xml ``` ### [](#execute)Execute MUnit DB サーバーでは、メモリ内データベースで命令を実行できるため、テストの前にレジストリを追加または削除したり、データが適切に保存されたかどうかを確認したりできます。 `execute`​ 操作で DB Server Connector を使用して、テーブル (​`Culinary Team Member,10,HIR`​) に新しい値を挿入します。次に、​`execute query`​ 操作で別の DB Server Connector を使用して、テーブルからすべての値 (新しく追加された値を含む) を取得し、ペイロードを保存するためにロガーコンポーネントを使用してペイロードを確認します。 ```xml ``` コンソールのロガーは次のようになります。 ```text org.mule.runtime.core.internal.processor.LoggerMessageProcessor: [{JOBTITLEID=DEV, EECSALARYORHOURLY=10, JOBTITLE=Developer}, {JOBTITLEID=HIR, EECSALARYORHOURLY=10, JOBTITLE=Culinary Team Member}] ``` ## [](#関連情報)関連情報 - [MUnit テストでの DB サーバーユーティリティの設定](https://docs.mulesoft.com/jp/munit/3.0/db-server-cookbook) # テストのユーティリティクラスの使用 テストケースを開発するときに、​`src/test/java`​ にあるカスタム Java クラスを使用することもできます。Java クラスは、DataWeave や Java Module を介して使用できます。 カスタムクラスを使用している場合、クラスのパッケージを ​`mule-artifact.json`​ ファイルにエクスポートする必要があります。 ```json { "minMuleVersion": "4.x.x", "classLoaderModelLoaderDescriptor": { "id": "mule", "attributes": { "exportedPackages": [ "com.example.test" ] } } } ``` たとえば、MUnit テストで ​`src/test/java/com/example/`​ にある ​`MyUtilClass.java`​ クラスを使用するとします。 MyUtilClass ```java package com.example.test; public class Helper { public static long getCurrentMillis() { return System.currentTimeMillis(); } } ``` ## [](#dataweave-を使用して-java-クラスを呼び出す)DataWeave を使用して Java クラスを呼び出す DataWeave を使用して静的メソッドを呼び出すには、​`java!`​ プレフィックスをクラスのパッケージ名に追加します。 DataWeave でのクラスの使用 ```xml ``` ## [](#java-module-を使用して-java-クラスを呼び出す)Java Module を使用して Java クラスを呼び出す Java Module を使用してカスタム Java クラスを呼び出す手順は、次のとおりです。 1. Java Module がプロジェクトにあることを確認します。 Java Module の連動関係 ```xml org.mule.module mule-java-module ${javaModule.version} mule-plugin test ``` 2. Java Module のいずれかの操作を使用します。 この例では、クラスの静的メソッドを呼び出します。 Java Module でのクラスの使用 ```xml ``` # テストのユーティリティクラスの使用 テストケースを開発するときに、​`src/test/java`​ にあるカスタム Java クラスを使用することもできます。Java クラスは、DataWeave や Java Module を介して使用できます。 カスタムクラスを使用している場合、クラスのパッケージを ​`mule-artifact.json`​ ファイルにエクスポートする必要があります。 ```json { "minMuleVersion": "4.x.x", "classLoaderModelLoaderDescriptor": { "id": "mule", "attributes": { "exportedPackages": [ "com.example.test" ] } } } ``` たとえば、MUnit テストで ​`src/test/java/com/example/`​ にある ​`MyUtilClass.java`​ クラスを使用するとします。 MyUtilClass ```java package com.example.test; public class Helper { public static long getCurrentMillis() { return System.currentTimeMillis(); } } ``` ## [](#dataweave-を使用して-java-クラスを呼び出す)DataWeave を使用して Java クラスを呼び出す DataWeave を使用して静的メソッドを呼び出すには、​`java!`​ プレフィックスをクラスのパッケージ名に追加します。 DataWeave でのクラスの使用 ```xml ``` ## [](#java-module-を使用して-java-クラスを呼び出す)Java Module を使用して Java クラスを呼び出す Java Module を使用してカスタム Java クラスを呼び出す手順は、次のとおりです。 1. Java Module がプロジェクトにあることを確認します。 Java Module の連動関係 ```xml org.mule.module mule-java-module ${javaModule.version} mule-plugin test ``` 2. Java Module のいずれかの操作を使用します。 この例では、クラスの静的メソッドを呼び出します。 Java Module でのクラスの使用 ```xml ``` # テスト用のリソースのモッキング テストスイートが肥大化し複雑になり始めたら、テストコードの一部をコードを「外部化」するのが良いでしょう。外部化により、コードを見やすく整理できるだけではなく、テストをモッキングするのに必要なファイルを再利用できます。 Mule 3 では、​`getResourceAsString()`​ 関数を使用して外部 (モック) リソースをテストに組み込んでいます。Mule 4 では、DataWeave スクリプトを作成するか、または DataWeave モジュールで変数を使用することで、テストコードをモッキングできます。 ## [](#dataweave-ファイルを使用したファイルのモック)DataWeave ファイルを使用したファイルのモック モッキングするデータを返す DataWeave ファイルを作成し、​`src/test/resources`​ フォルダーに保存してから、テストで DataWeave の関数を使用してこのファイルを読み込みます。 たとえば、​`src/test/resources/sample_data`​ フォルダーに ​`mockPost.dwl`​ というファイルを次のコンテンツで作成してあるとします。 ```none %dw 2.0 output application/json --- { "foo" : "var" } ``` この DataWeave ファイル (​`mockPost.dwl`​) は、​`http:request`​ 要求で返されるモックペイロードを作成するサンプルです。 `mock-when`​ で ​`then-return`​ セクションを設定する場合には、​`readUrl`​ 関数を使用してマッピングファイルを読み込みます。 ```xml ``` `classpath-based`​ URL では、​`classpath:`​ プロトコルプレフィックスを使用して ​`src/test/resources`​ で定義されているファイルを探します。 ## [](#dataweave-モジュールで変数を使用したファイルのモック)DataWeave モジュールで変数を使用したファイルのモック DataWeave 変数を使用してデータを宣言することで、モックデータを単一のファイルにまとめた DataWeave モジュールを作成できます。 たとえば、​`src/test/resources`​ フォルダーに ​`TestData.dwl`​ ファイルを作成することでカスタム DataWeave モジュールを作成し、異なるモックデータを (ファイルから、またはインラインで) 参照する変数を追加します。 ```none import getResourceAsString from MunitTools var mockPost = readUrl('classpath://sample_data/mockPost.dwl') var foo = "N123" var jsonFromFile = read(getResourceAsString('sample_data/mydata.json'), 'application/json') var jsonObject = { paymentID: "1B56925769601335TLQMIWVY" } ``` その後、自分のモジュールで変数をインポートすることによって DataWeave モジュールで定義されている変数にアクセスできます。 ```xml ``` ## [](#関連情報)関連情報 - [カスタムモジュールおよびマッピングの作成](https://docs.mulesoft.com/dataweave/latest/dataweave-create-module) # テスト用のリソースのモッキング テストスイートが肥大化し複雑になり始めたら、テストコードの一部をコードを「外部化」するのが良いでしょう。外部化により、コードを見やすく整理できるだけではなく、テストをモッキングするのに必要なファイルを再利用できます。 Mule 3 では、​`getResourceAsString()`​ 関数を使用して外部 (モック) リソースをテストに組み込んでいます。Mule 4 では、DataWeave スクリプトを作成するか、または DataWeave モジュールで変数を使用することで、テストコードをモッキングできます。 ## [](#dataweave-ファイルを使用したファイルのモック)DataWeave ファイルを使用したファイルのモック モッキングするデータを返す DataWeave ファイルを作成し、​`src/test/resources`​ フォルダーに保存してから、テストで DataWeave の関数を使用してこのファイルを読み込みます。 たとえば、​`src/test/resources/sample_data`​ フォルダーに ​`mockPost.dwl`​ というファイルを次のコンテンツで作成してあるとします。 ```none %dw 2.0 output application/json --- { "foo" : "var" } ``` この DataWeave ファイル (​`mockPost.dwl`​) は、​`http:request`​ 要求で返されるモックペイロードを作成するサンプルです。 `mock-when`​ で ​`then-return`​ セクションを設定する場合には、​`readUrl`​ 関数を使用してマッピングファイルを読み込みます。 ```xml ``` `classpath-based`​ URL では、​`classpath:`​ プロトコルプレフィックスを使用して ​`src/test/resources`​ で定義されているファイルを探します。 ## [](#dataweave-モジュールで変数を使用したファイルのモック)DataWeave モジュールで変数を使用したファイルのモック DataWeave 変数を使用してデータを宣言することで、モックデータを単一のファイルにまとめた DataWeave モジュールを作成できます。 たとえば、​`src/test/resources`​ フォルダーに ​`TestData.dwl`​ ファイルを作成することでカスタム DataWeave モジュールを作成し、異なるモックデータを (ファイルから、またはインラインで) 参照する変数を追加します。 ```none import getResourceAsString from MunitTools var mockPost = readUrl('classpath://sample_data/mockPost.dwl') var foo = "N123" var jsonFromFile = read(getResourceAsString('sample_data/mydata.json'), 'application/json') var jsonObject = { paymentID: "1B56925769601335TLQMIWVY" } ``` その後、自分のモジュールで変数をインポートすることによって DataWeave モジュールで定義されている変数にアクセスできます。 ```xml ``` ## [](#関連情報)関連情報 - [カスタムモジュールおよびマッピングの作成](https://docs.mulesoft.com/dataweave/latest/dataweave-create-module) # ドメインベースのアプリケーションの MUnit サポート MUnit では、Mule ドメインを参照して実行されるアプリケーションをテストできます。 ドメインベースのアプリケーションの MUnit サポートは、最小限のコード変更で実装できるように設計されています。ただし、Mule アプリケーションが Mule ドメインに連動している場合、次の点を考慮してください。 - Anypoint Studio で作業する場合、常に Mule ドメインがワークスペースに含まれている必要があります。 - フォルダーの名前は、アーティファクトと同じにする必要があります。 Mule アプリケーションであるか、Mule ドメインであるかに関係なく、Mule プロジェクトが含まれているワークスペースのフォルダーの名前は、pom ファイルで定義されているアーティファクト ID と同じにする必要があります。 たとえば、プロジェクトのアーティファクト ID が次のようになっている場合、 ```xml mule-project ``` Studio ワークスペースのフォルダーの名前は、​`mule-project`​ にする必要があります。 これは大文字と小文字が区別されます。フォルダーの名前が ​`Mule-Project`​ の場合、MUnit でプロジェクトが認識されません。 - リソースは、M2 リポジトリにインストールされている必要があります。 ドメインと Mule アプリケーションは、通常の連動関係として処理する必要があります。これらをアーティファクトとして設定するには、これらを M2 リポジトリにインストールする必要があります。 - リソースは、テストスイートの pom ファイルに含まれている必要があります。 次のような Mule ドメインプロジェクトの場合、 ```xml 4.0.0 org.mule.app domain-project mule-domain 1.0.0-SNAPSHOT Domain domain-project Project ``` Mule アプリケーションの連動関係は次のようになっている必要があります。 ```xml org.mule.app domain-project 1.0.0-SNAPSHOT mule-domain provided ```

リポジトリとテストスイートの pom ファイルで ​<version>​ アーティファクトとの一貫性を確保してください。

## [](#関連情報)関連情報 - [ドメインサポート (Anypoint Studio)](https://docs.mulesoft.com/studio/domain-support-concept) # ドメインベースのアプリケーションの MUnit サポート MUnit では、Mule ドメインを参照して実行されるアプリケーションをテストできます。 ドメインベースのアプリケーションの MUnit サポートは、最小限のコード変更で実装できるように設計されています。ただし、Mule アプリケーションが Mule ドメインに連動している場合、次の点を考慮してください。 - Anypoint Studio で作業する場合、常に Mule ドメインがワークスペースに含まれている必要があります。 - フォルダーの名前は、アーティファクトと同じにする必要があります。 Mule アプリケーションであるか、Mule ドメインであるかに関係なく、Mule プロジェクトが含まれているワークスペースのフォルダーの名前は、pom ファイルで定義されているアーティファクト ID と同じにする必要があります。 たとえば、プロジェクトのアーティファクト ID が次のようになっている場合、 ```xml mule-project ``` Studio ワークスペースのフォルダーの名前は、​`mule-project`​ にする必要があります。 これは大文字と小文字が区別されます。フォルダーの名前が ​`Mule-Project`​ の場合、MUnit でプロジェクトが認識されません。 - リソースは、M2 リポジトリにインストールされている必要があります。 ドメインと Mule アプリケーションは、通常の連動関係として処理する必要があります。これらをアーティファクトとして設定するには、これらを M2 リポジトリにインストールする必要があります。 - リソースは、テストスイートの pom ファイルに含まれている必要があります。 次のような Mule ドメインプロジェクトの場合、 ```xml 4.0.0 org.mule.app domain-project mule-domain 1.0.0-SNAPSHOT Domain domain-project Project ``` Mule アプリケーションの連動関係は次のようになっている必要があります。 ```xml org.mule.app domain-project 1.0.0-SNAPSHOT mule-domain provided ```

リポジトリとテストスイートの pom ファイルで ​<version>​ アーティファクトとの一貫性を確保してください。

## [](#関連情報)関連情報 - [ドメインサポート (Anypoint Studio)](https://docs.mulesoft.com/studio/domain-support-concept) # ドメインベースのアプリケーションのテスト MUnit 2.x では、追加の設定を実行せずに、Mule ドメインとリソースを共有する Mule アプリケーション用の MUnit テストスイートを作成できます。このしくみを理解するには、実際の値が入力された特定のシナリオを考慮し、そのテストの作成方法が示された手順でそれらの値を使用すると役立ちます。 ## [](#テストするドメインベースの-mule-アプリケーション例)テストするドメインベースの Mule アプリケーション例 `domain-config`​ という Mule ドメインについて考えます。このドメインは、その内部のすべての Mule アプリケーションの HTTP リスナーのグローバル設定を定義します。 ##### Studio ビジュアルエディター ![domain munit example](/mulesoft/current/ja-jp/munit/2.3/_images/domain-munit-example.png) ##### XML エディター Mule ドメイン ```XML ``` Mule ドメイン pom.xml ファイル ```XML com.mycompany domain-config 1.0.0-SNAPSHOT mule-domain domain-config ``` ping されているパスを返す基本的な Mule アプリケーションについても考えます。 ##### Studio ビジュアルエディター ![mule app domain listener](/mulesoft/current/ja-jp/munit/2.3/_images/mule-app-domain-listener.png) このアプリケーションは HTTP リスナーグローバル設定をその Mule ドメイン (​`HTTP_Listener_config_domain`​) から継承するため、HTTP リスナーグローバル設定は定義しません。 ![mule app domain set payload](/mulesoft/current/ja-jp/munit/2.3/_images/mule-app-domain-set-payload.png) ##### XML エディター ```XML ``` このアプリケーションは ​`http:listener-config`​ グローバル要素をその Mule ドメイン (​`HTTP_Listener_config_domain`​) から継承するため、グローバル要素は定義しません。アプリケーションはその ​`pom.xml`​ ファイル内でドメインの連動関係を宣言します。 ```XML ... com.mycompany domain-config 1.0.0 mule-domain provided ... ``` ## [](#ドメインベースのアプリケーション例の-munit-テストの作成)ドメインベースのアプリケーション例の MUnit テストの作成 Mule ドメインは Mule アプリケーションと連動関係にあるため、MUnit は Mule ドメインを起動して、テスト対象のアプリケーションに必要なグローバル要素設定を取得できます。 ping されているパスが実際に期待される ​`/api`​ パスであることを検証する MUnit テストを考えてみます。 ##### Studio ビジュアルエディター ![munit domain sample](/mulesoft/current/ja-jp/munit/2.3/_images/munit-domain-sample.png) 1. `execution`​ スコープ内で、HTTP リクエスターが ​`GET`​ 要求をアプリケーションのエンドポイントに送信します。 2. `validation`​ スコープ内で、予想される応答に対する ​`execution`​ スコープからの応答をアサートする Assert Equals プロセッサーをセットアップします。 3. 応答を予想されるテキストと比較するには、ペイロードをプレーンテキストに変換する必要があります。 ##### XML エディター ```XML (1) ``` 1. `execution`​ スコープ内で、HTTP リクエスターが ​`GET`​ 要求をアプリケーションのエンドポイントに送信します。 2. `validation`​ スコープ内で、予想される応答に対する ​`execution`​ スコープからの応答をアサートする ​`assert-equals`​ プロセッサーをセットアップすることにします。 3. 応答を予想されるテキストと比較するには、ペイロードをプレーンテキストに変換する必要があります。 # ドメインベースのアプリケーションのテスト MUnit 2.x では、追加の設定を実行せずに、Mule ドメインとリソースを共有する Mule アプリケーション用の MUnit テストスイートを作成できます。このしくみを理解するには、実際の値が入力された特定のシナリオを考慮し、そのテストの作成方法が示された手順でそれらの値を使用すると役立ちます。 ## [](#テストするドメインベースの-mule-アプリケーション例)テストするドメインベースの Mule アプリケーション例 `domain-config`​ という Mule ドメインについて考えます。このドメインは、その内部のすべての Mule アプリケーションの HTTP リスナーのグローバル設定を定義します。 ##### Studio ビジュアルエディター ![domain munit example](/mulesoft/current/ja-jp/munit/3.0/_images/domain-munit-example.png) ##### XML エディター Mule ドメイン ```XML ``` Mule ドメイン pom.xml ファイル ```XML com.mycompany domain-config 1.0.0-SNAPSHOT mule-domain domain-config ``` ping されているパスを返す基本的な Mule アプリケーションについても考えます。 ##### Studio ビジュアルエディター ![mule app domain listener](/mulesoft/current/ja-jp/munit/3.0/_images/mule-app-domain-listener.png) このアプリケーションは HTTP リスナーグローバル設定をその Mule ドメイン (​`HTTP_Listener_config_domain`​) から継承するため、HTTP リスナーグローバル設定は定義しません。 ![mule app domain set payload](/mulesoft/current/ja-jp/munit/3.0/_images/mule-app-domain-set-payload.png) ##### XML エディター ```XML ``` このアプリケーションは ​`http:listener-config`​ グローバル要素をその Mule ドメイン (​`HTTP_Listener_config_domain`​) から継承するため、グローバル要素は定義しません。アプリケーションはその ​`pom.xml`​ ファイル内でドメインの連動関係を宣言します。 ```XML ... com.mycompany domain-config 1.0.0 mule-domain provided ... ``` ## [](#ドメインベースのアプリケーション例の-munit-テストの作成)ドメインベースのアプリケーション例の MUnit テストの作成 Mule ドメインは Mule アプリケーションと連動関係にあるため、MUnit は Mule ドメインを起動して、テスト対象のアプリケーションに必要なグローバル要素設定を取得できます。 ping されているパスが実際に期待される ​`/api`​ パスであることを検証する MUnit テストを考えてみます。 ##### Studio ビジュアルエディター ![munit domain sample](/mulesoft/current/ja-jp/munit/3.0/_images/munit-domain-sample.png) 1. `execution`​ スコープ内で、HTTP リクエスターが ​`GET`​ 要求をアプリケーションのエンドポイントに送信します。 2. `validation`​ スコープ内で、予想される応答に対する ​`execution`​ スコープからの応答をアサートする Assert Equals プロセッサーをセットアップします。 3. 応答を予想されるテキストと比較するには、ペイロードをプレーンテキストに変換する必要があります。 ##### XML エディター ```XML (1) ``` 1. `execution`​ スコープ内で、HTTP リクエスターが ​`GET`​ 要求をアプリケーションのエンドポイントに送信します。 2. `validation`​ スコープ内で、予想される応答に対する ​`execution`​ スコープからの応答をアサートする ​`assert-equals`​ プロセッサーをセットアップすることにします。 3. 応答を予想されるテキストと比較するには、ペイロードをプレーンテキストに変換する必要があります。 # パラメーター化 パラメーター化されたテストスイートでは、異なる入力で同じテストが実行されます。 テストスイートのパラメーター化は、次のように設定レベルで定義されます。 ```xml ``` テストスイートは 2 回実行されます。最初は ​`firstParameterization`​ パラメーターで実行されます。2 回目は ​`secondParameterization`​ パラメーターで実行されます。 たとえば、フローのペイロードを設定するテストがある場合、次のような結果が想定されます。 パラメーター化の例 ```xml ``` ## [](#ファイルからのパラメーター化)ファイルからのパラメーター化 異なるテストスイートで同じパラメーター化された値を使用するには、パラメーター化の値を Mule アプリケーションプロジェクトの ​`/test/resources`​ ディレクトリの YAML ファイルに保存する必要があります。 parameterizations.yaml の例 ```yaml firstParameterization: name: "Robert" lastname: "Plant" secondParameterization: name: "Jimmy" lastname: "Page" ``` 次に、それをテストスイート設定から参照します。 ファイルからのパラメーター化の例 ```xml ``` 両方の方法を組み合わせて、パラメーター化された値をテストスイートに追加できます。 ファイルおよびテストスイート設定からのパラメーター化の例 ```xml ``` YAML ファイルとテストスイート設定で同じパラメーター化キーを定義した場合、テストスイートのパラメーター化が YAML のパラメーター化よりも優先されます。 # パラメーター化 パラメーター化されたテストスイートでは、異なる入力で同じテストが実行されます。 テストスイートのパラメーター化は、次のように設定レベルで定義されます。 ```xml ``` テストスイートは 2 回実行されます。最初は ​`firstParameterization`​ パラメーターで実行されます。2 回目は ​`secondParameterization`​ パラメーターで実行されます。 たとえば、フローのペイロードを設定するテストがある場合、次のような結果が想定されます。 パラメーター化の例 ```xml ``` ## [](#ファイルからのパラメーター化)ファイルからのパラメーター化 異なるテストスイートで同じパラメーター化された値を使用するには、パラメーター化の値を Mule アプリケーションプロジェクトの ​`/test/resources`​ ディレクトリの YAML ファイルに保存する必要があります。 parameterizations.yaml の例 ```yaml firstParameterization: name: "Robert" lastname: "Plant" secondParameterization: name: "Jimmy" lastname: "Page" ``` 次に、それをテストスイート設定から参照します。 ファイルからのパラメーター化の例 ```xml ``` 両方の方法を組み合わせて、パラメーター化された値をテストスイートに追加できます。 ファイルおよびテストスイート設定からのパラメーター化の例 ```xml ``` YAML ファイルとテストスイート設定で同じパラメーター化キーを定義した場合、テストスイートのパラメーター化が YAML のパラメーター化よりも優先されます。 # リソースマッチャー ## [](#getresourceasstreamstring)getResourceAsStream(String) パス文字列からリソースをストリームとして返します。 例 ```xml ``` ## [](#getresourceasreusablestreamstring)getResourceAsReusableStream(String) パス文字列からリソースを再利用可能なストリームとして返します。 例 ```xml ``` ## [](#getresourceasstringpathstringencodingstring)getResourceAsString(path:String,encoding:String) パス文字列からリソースを文字列として返します。ここで、2 つ目のパラメーター (エンコード) は省略可能です。 例 ```xml ``` エンコードを指定することもできます。 例 ```xml ``` ## [](#getresourceasbytearraystring)getResourceAsByteArray(String) パス文字列からリソースをバイト配列として返します。 例 ```xml ``` ## [](#queuesizestring)queueSize(String) `#[MunitTools::queueSize()]`​ 内に指定されたキューのサイズを返します。 たとえば、​`QUEUE_SIZE`​ という名前のキューのサイズをアサートするには次のようにします。 例 ```xml #['EXAMPLE'] ``` ## [](#createmessagepayload-any-mimetype-stringnull-attributes-any-attributemimetype-stringnull)createMessage(payload: Any, mimeType: String|Null , attributes: Any, attributeMimeType: String|Null) 指定された属性で Mule メッセージを作成します。 例 ```xml ``` ## [](#関連情報)関連情報 - [MUnit マッチャー](https://docs.mulesoft.com/jp/munit/2.3/munit-matchers) - [コアマッチャーリファレンス](https://docs.mulesoft.com/jp/munit/2.3/core-matchers-reference) - [文字列マッチャーリファレンス](https://docs.mulesoft.com/jp/munit/2.3/string-matchers-reference) - [比較可能マッチャーリファレンス](https://docs.mulesoft.com/jp/munit/2.3/comparable-matchers-reference) # リソースマッチャー ## [](#getresourceasstreamstring)getResourceAsStream(String) パス文字列からリソースをストリームとして返します。 例 ```xml ``` ## [](#getresourceasreusablestreamstring)getResourceAsReusableStream(String) パス文字列からリソースを再利用可能なストリームとして返します。 例 ```xml ``` ## [](#getresourceasstringpathstringencodingstring)getResourceAsString(path:String,encoding:String) パス文字列からリソースを文字列として返します。ここで、2 つ目のパラメーター (エンコード) は省略可能です。 例 ```xml ``` エンコードを指定することもできます。 例 ```xml ``` ## [](#getresourceasbytearraystring)getResourceAsByteArray(String) パス文字列からリソースをバイト配列として返します。 例 ```xml ``` ## [](#queuesizestring)queueSize(String) `#[MunitTools::queueSize()]`​ 内に指定されたキューのサイズを返します。 たとえば、​`QUEUE_SIZE`​ という名前のキューのサイズをアサートするには次のようにします。 例 ```xml #['EXAMPLE'] ``` ## [](#createmessagepayload-any-mimetype-stringnull-attributes-any-attributemimetype-stringnull)createMessage(payload: Any, mimeType: String|Null , attributes: Any, attributeMimeType: String|Null) 指定された属性で Mule メッセージを作成します。 例 ```xml ``` ## [](#関連情報)関連情報 - [MUnit マッチャー](https://docs.mulesoft.com/jp/munit/3.0/munit-matchers) - [コアマッチャーリファレンス](https://docs.mulesoft.com/jp/munit/3.0/core-matchers-reference) - [文字列マッチャーリファレンス](https://docs.mulesoft.com/jp/munit/3.0/string-matchers-reference) - [比較可能マッチャーリファレンス](https://docs.mulesoft.com/jp/munit/3.0/comparable-matchers-reference) # 動的ディレクトリ テスト中にファイルとフォルダーを管理する場合、MUnit によって一時ディレクトリを参照する ​`munit.temporary.directory`​ プロパティが提供されます。このディレクトリ内にファイルとフォルダーを作成して、テストで使用できます。 一時ディレクトリは、各テストの終了時に削除されます。 たとえば、ファイルコネクタを使用して、次のように作業ディレクトリを設定できます。 ```xml ``` 次に、それを使用してその中にファイル/フォルダーを作成します。 ```xml ``` ## [](#関連情報)関連情報 - [動的ポート](https://docs.mulesoft.com/jp/munit/2.3/dynamic-ports) # 動的ディレクトリ テスト中にファイルとフォルダーを管理する場合、MUnit によって一時ディレクトリを参照する ​`munit.temporary.directory`​ プロパティが提供されます。このディレクトリ内にファイルとフォルダーを作成して、テストで使用できます。 一時ディレクトリは、各テストの終了時に削除されます。 たとえば、ファイルコネクタを使用して、次のように作業ディレクトリを設定できます。 ```xml ``` 次に、それを使用してその中にファイル/フォルダーを作成します。 ```xml ``` ## [](#関連情報)関連情報 - [動的ポート](https://docs.mulesoft.com/jp/munit/3.0/dynamic-ports) # 動的ポート 動的ポートグローバル要素を使用して、空きポートをプロパティにバインドできます。使用可能な空きポートを検索して、特定の範囲に絞り込むことができます。 たとえば、動的ポートは次のように表示されます。 ```xml ``` また、HTTP 設定に使用することもできます。 ```xml ``` さらに、ポートを取得する場所から最小値と最大値を設定できます。 ```xml ``` ## [](#関連情報)関連情報 - [動的ディレクトリ](https://docs.mulesoft.com/jp/munit/2.3/dynamic-directories) - [Storage イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/storage-event-processors) # 動的ポート 動的ポートグローバル要素を使用して、空きポートをプロパティにバインドできます。使用可能な空きポートを検索して、特定の範囲に絞り込むことができます。 たとえば、動的ポートは次のように表示されます。 ```xml ``` また、HTTP 設定に使用することもできます。 ```xml ``` さらに、ポートを取得する場所から最小値と最大値を設定できます。 ```xml ``` ## [](#関連情報)関連情報 - [動的ディレクトリ](https://docs.mulesoft.com/jp/munit/3.0/dynamic-directories) - [Storage イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/storage-event-processors) # 埋め込み Mule Runtime Engine バージョンのパッチ適用 MUnit でのパッチの適用は Mule Runtime Engine でのパッチの適用とは異なります。MUnit は埋め込み Mule コンテナを使用して動作します。この埋め込みコンテナでは、特定のバージョンに基づいて Mule を開始するために必要なすべての連動関係がダウンロードされます。パッチ適用済み Mule バージョン (​`4.3.0-20200727`​ など) を使用するには、そのバージョンに対して MUnit を実行するように指示する必要があります。この操作は Maven または Anypoint Studio から行うことができます。 ## [](#maven)Maven を使用して MUnit にパッチを適用する デフォルトでは、MUnit は、​`mule-artifact.json`​ ファイルで定義された ​`minMuleVersion`​ に対応する Mule バージョンに対して実行されます。​`munit-maven-plugin`​ アーティファクト設定の ​`runtimeVersion`​ 属性を使用して、このバージョンを上書きできます。 ```xml com.mulesoft.munit.tools munit-maven-plugin ${munit.version} test test test 4.3.0-20200727 (1) ```
1この例のプレースホルダーのバージョンは、MuleSoft によって提供される各自のバージョンに置き換えてください。
## [](#studio)Studio を使用して MUnit にパッチを適用する デフォルトでは、MUnit はプロジェクトのサーバーの Mule Runtime Engine バージョンを使用して、Anypoint Studio で実行されます。MUnit の \[Run Configuration (設定の実行)\] メニューで、パッチ適用済み Mule バージョンを指定して、このバージョンを上書きできます。 1. 上部のメニューバーで ​**\[Run (実行)\]**​、​**\[Run Configurations… (設定の実行…​)\]**​ の順に選択します。 2. **\[MUnit\]**​ の下の MUnit テストファイルを選択します。 3. **\[Advanced Settings (詳細設定)\]**​ の ​**\[Mule Runtime Version (Mule Runtime バージョン)\]**​ 項目で、使用するパッチ適用済み Mule バージョンを入力します。 ![runtime patching studio](/mulesoft/current/ja-jp/munit/2.3/_images/runtime-patching-studio.png) プロジェクトの POM ファイルで ​`runtimeVersion`​ 属性をすでに設定している場合、​**\[Load configuration from POM file (POM ファイルから設定を読み込む)\]**​ をクリックし、そのバージョンを ​**\[Mule Runtime Version (Mule Runtime バージョン)\]**​ 項目に自動的に読み込みます。 ## [](#関連情報)関連情報 - [Mule Runtime リリースノート](https://docs.mulesoft.com/jp/release-notes/mule-runtime/mule-esb) - [MUnit Maven プラグイン](https://docs.mulesoft.com/jp/munit/2.3/munit-maven-plugin) # 埋め込み Mule Runtime Engine バージョンのパッチ適用 MUnit でのパッチの適用は Mule Runtime Engine でのパッチの適用とは異なります。MUnit は埋め込み Mule コンテナを使用して動作します。この埋め込みコンテナでは、特定のバージョンに基づいて Mule を開始するために必要なすべての連動関係がダウンロードされます。パッチ適用済み Mule バージョン (​`4.3.0-20200727`​ など) を使用するには、そのバージョンに対して MUnit を実行するように指示する必要があります。この操作は Maven または Anypoint Studio から行うことができます。 ## [](#maven)Maven を使用して MUnit にパッチを適用する デフォルトでは、MUnit は、​`mule-artifact.json`​ ファイルで定義された ​`minMuleVersion`​ に対応する Mule バージョンに対して実行されます。​`munit-maven-plugin`​ アーティファクト設定の ​`runtimeVersion`​ 属性を使用して、このバージョンを上書きできます。 ```xml com.mulesoft.munit.tools munit-maven-plugin ${munit.version} test test test 4.3.0-20200727 (1) ```
1この例のプレースホルダーのバージョンは、MuleSoft によって提供される各自のバージョンに置き換えてください。
## [](#studio)Studio を使用して MUnit にパッチを適用する デフォルトでは、MUnit はプロジェクトのサーバーの Mule Runtime Engine バージョンを使用して、Anypoint Studio で実行されます。MUnit の \[Run Configuration (設定の実行)\] メニューで、パッチ適用済み Mule バージョンを指定して、このバージョンを上書きできます。 1. 上部のメニューバーで ​**\[Run (実行)\]**​、​**\[Run Configurations… (設定の実行…​)\]**​ の順に選択します。 2. **\[MUnit\]**​ の下の MUnit テストファイルを選択します。 3. **\[Advanced Settings (詳細設定)\]**​ の ​**\[Mule Runtime Version (Mule Runtime バージョン)\]**​ 項目で、使用するパッチ適用済み Mule バージョンを入力します。 ![runtime patching studio](/mulesoft/current/ja-jp/munit/3.0/_images/runtime-patching-studio.png) プロジェクトの POM ファイルで ​`runtimeVersion`​ 属性をすでに設定している場合、​**\[Load configuration from POM file (POM ファイルから設定を読み込む)\]**​ をクリックし、そのバージョンを ​**\[Mule Runtime Version (Mule Runtime バージョン)\]**​ 項目に自動的に読み込みます。 ## [](#関連情報)関連情報 - [Mule Runtime リリースノート](https://docs.mulesoft.com/jp/release-notes/mule-runtime/mule-esb) - [MUnit Maven プラグイン](https://docs.mulesoft.com/jp/munit/3.0/munit-maven-plugin) # 対象変数にデータを保存するプロセッサーのテスト 結果を対象変数に保存するプロセッサーをテストする場合、保存された変数の内容をアサーションで確認するようにします。プロセッサーをモックする場合は、対象変数の値を定義します。 ## [](#http-request-操作からの対象変数のテストの例)HTTP Request 操作からの対象変数のテストの例 次の XML 設定を使用する Mule アプリケーションについて考えてみます。 ```xml ``` HTTP リスナーが要求を受信すると、アプリケーションは HTTP 要求を実行し、プロセッサーは受信した HTTP 応答を ​`httpResponse`​ という対象変数に保存します。 MUnit テストを作成し、保存された変数にたとえば ​`200`​ HTTP 状況コードが含まれていることをアサートできます。 ```xml ``` HTTP 要求を実行せずにこのアプリケーションの動作をテストする場合は、プロセッサーと保存された対象変数をモックできます。 ### [](#対象変数にデータを保存するプロセッサーのモック)対象変数にデータを保存するプロセッサーのモック 次のテストでは、前述の Mule アプリケーション例の HTTP 要求と結果の対象変数をモックして、保存された HTTP 状況コードが ​`200`​ であることをアサートします。 ```xml ``` ## [](#関連情報)関連情報 - [Mock When イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/mock-event-processor) - [MUnit マッチャー](https://docs.mulesoft.com/jp/munit/2.3/munit-matchers) # 対象変数にデータを保存するプロセッサーのテスト 結果を対象変数に保存するプロセッサーをテストする場合、保存された変数の内容をアサーションで確認するようにします。プロセッサーをモックする場合は、対象変数の値を定義します。 ## [](#http-request-操作からの対象変数のテストの例)HTTP Request 操作からの対象変数のテストの例 次の XML 設定を使用する Mule アプリケーションについて考えてみます。 ```xml ``` HTTP リスナーが要求を受信すると、アプリケーションは HTTP 要求を実行し、プロセッサーは受信した HTTP 応答を ​`httpResponse`​ という対象変数に保存します。 MUnit テストを作成し、保存された変数にたとえば ​`200`​ HTTP 状況コードが含まれていることをアサートできます。 ```xml ``` HTTP 要求を実行せずにこのアプリケーションの動作をテストする場合は、プロセッサーと保存された対象変数をモックできます。 ### [](#対象変数にデータを保存するプロセッサーのモック)対象変数にデータを保存するプロセッサーのモック 次のテストでは、前述の Mule アプリケーション例の HTTP 要求と結果の対象変数をモックして、保存された HTTP 状況コードが ​`200`​ であることをアサートします。 ```xml ``` ## [](#関連情報)関連情報 - [Mock When イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/mock-event-processor) - [MUnit マッチャー](https://docs.mulesoft.com/jp/munit/3.0/munit-matchers) # 文字列マッチャーリファレンス ## [](#containsstringstring)containsString(String) 指定した文字列が式に含まれていることを確認します。 例 ```xml ``` ## [](#startswithstring)startsWith(String) 指定した文字列で式が開始されていることを確認します。 例 ```xml ``` ## [](#endswithstring)endsWith(String) 指定した文字列で式が終了していることを確認します。 例 ```xml ``` ## [](#isemptystring)isEmptyString() 式の長さがゼロであることを確認します。 例 ```xml ``` ## [](#isemptyornullstring)isEmptyOrNullString() 式が null、または式の長さがゼロであることを確認します。 例 ```xml ``` ## [](#equaltoignoringcasestring)equalToIgnoringCase(String) 式が、指定した文字列に等しい (大文字と小文字の区別なし) ことを確認します。 例 ```xml ``` ## [](#equaltoignoringwhitespacestring)equalToIgnoringWhiteSpace(String) 式が文字列に等しいことを確認します。ただし、先頭と末尾の空白を無視し、内側にあるすべての空白を 1 文字の空白に縮めます。 例 ```xml ``` ## [](#stringcontainsinorderarraystring)stringContainsInOrder(Array) 指定したすべてのサブ文字列がその順序に関係なく式に含まれていることを確認します。 例 ```xml ``` ## [](#関連情報)関連情報 - [MUnit マッチャー](https://docs.mulesoft.com/jp/munit/2.3/munit-matchers) - [コアマッチャーリファレンス](https://docs.mulesoft.com/jp/munit/2.3/core-matchers-reference) - [比較可能マッチャーリファレンス](https://docs.mulesoft.com/jp/munit/2.3/comparable-matchers-reference) - [イテラブルおよびマップマッチャーリファレンス](https://docs.mulesoft.com/jp/munit/2.3/iterable-map-matchers-reference) # 文字列マッチャーリファレンス ## [](#containsstringstring)containsString(String) 指定した文字列が式に含まれていることを確認します。 例 ```xml ``` ## [](#startswithstring)startsWith(String) 指定した文字列で式が開始されていることを確認します。 例 ```xml ``` ## [](#endswithstring)endsWith(String) 指定した文字列で式が終了していることを確認します。 例 ```xml ``` ## [](#isemptystring)isEmptyString() 式の長さがゼロであることを確認します。 例 ```xml ``` ## [](#isemptyornullstring)isEmptyOrNullString() 式が null、または式の長さがゼロであることを確認します。 例 ```xml ``` ## [](#equaltoignoringcasestring)equalToIgnoringCase(String) 式が、指定した文字列に等しい (大文字と小文字の区別なし) ことを確認します。 例 ```xml ``` ## [](#equaltoignoringwhitespacestring)equalToIgnoringWhiteSpace(String) 式が文字列に等しいことを確認します。ただし、先頭と末尾の空白を無視し、内側にあるすべての空白を 1 文字の空白に縮めます。 例 ```xml ``` ## [](#stringcontainsinorderarraystring)stringContainsInOrder(Array) 指定したすべてのサブ文字列がその順序に関係なく式に含まれていることを確認します。 例 ```xml ``` ## [](#関連情報)関連情報 - [MUnit マッチャー](https://docs.mulesoft.com/jp/munit/3.0/munit-matchers) - [コアマッチャーリファレンス](https://docs.mulesoft.com/jp/munit/3.0/core-matchers-reference) - [比較可能マッチャーリファレンス](https://docs.mulesoft.com/jp/munit/3.0/comparable-matchers-reference) - [イテラブルおよびマップマッチャーリファレンス](https://docs.mulesoft.com/jp/munit/3.0/iterable-map-matchers-reference) # 概要 MUnit とは Mule アプリケーションテストフレームワークであり、インテグレーションおよび API の自動テストを簡単に構築できます。完全なインテグレーションおよびユニットテスト機能が提供され、継続的なデプロイメント環境とのインテグレーション用に Maven および Surefire と完全に統合されています。 MUnit バージョン 2.3 は、4.0 以降のすべての Mule バージョンで動作します。 MUnit を使用して次の操作を実行できます。 - Mule コードを記述してテストを作成する - プロセッサーをモックする - プロセッサーをスパイする - プロセッサーのコールを確認する - 特定のテストを有効化または無視する - タグテスト - Studio でカバー率を視覚的に確認する - カバー率レポートを生成する MUnit は Anypoint Studio と完全に統合されているため、Mule アプリケーションと同様に MUnit テストを作成、設計、および実行できます。 MUnit は 2 つのメインサブモジュールに分割されます。 - MUnit - MUnit ツール 各モジュールには独自の連動関係があります。 MUnit の連動関係 ```xml com.mulesoft.munit munit-runner 2.3.0 mule-plugin test ``` MUnit ツールの連動関係 ```xml com.mulesoft.munit munit-tools 2.3.0 mule-plugin test ``` ## [](#関連情報)関連情報 - [MUnit イベントプロセッサー](https://docs.mulesoft.com/jp/munit/2.3/event-processors) # 概要 MUnit とは Mule アプリケーションテストフレームワークであり、インテグレーションおよび API の自動テストを簡単に構築できます。完全なインテグレーションおよびユニットテスト機能が提供され、継続的なデプロイメント環境とのインテグレーション用に Maven および Surefire と完全に統合されています。 MUnit バージョン 3.0 は、4.3 以降のすべての Mule バージョンで動作します。 MUnit を使用して次の操作を実行できます。 - Mule コードを記述してテストを作成する - プロセッサーをモックする - プロセッサーをスパイする - プロセッサーのコールを確認する - 特定のテストを有効化または無視する - タグテスト - Studio でカバー率を視覚的に確認する - カバー率レポートを生成する MUnit は Anypoint Studio と完全に統合されているため、Mule アプリケーションと同様に MUnit テストを作成、設計、および実行できます。 MUnit は 2 つのメインサブモジュールに分割されます。 - MUnit - MUnit ツール 各モジュールには独自の連動関係があります。 MUnit の連動関係 ```xml com.mulesoft.munit munit-runner 2.3.0 mule-plugin test ``` MUnit ツールの連動関係 ```xml com.mulesoft.munit munit-tools 2.3.0 mule-plugin test ``` ## [](#関連情報)関連情報 - [MUnit イベントプロセッサー](https://docs.mulesoft.com/jp/munit/3.0/event-processors) # 比較可能マッチャーリファレンス
Comparable​ は、相互に比較できるすべての型を表す DataWeave 型です。
許可されるプリミティブは、整数や日付などのプリミティブ値を渡すことができる String、Number、Boolean、DateTime、LocalDateTime、LocalTime、Time、TimeZone です。
## [](#greaterthancomparable)greaterThan(Comparable) 式が指定された値より大きいことを確認します。 例 ```xml ``` 例 ```xml ``` ## [](#greaterthanorequaltocomparable)greaterThanOrEqualTo(Comparable) 式が指定された値以上であることを確認します。 例 ```xml ``` 例 ```xml ``` ## [](#lessthancomparable)lessThan(Comparable) 例 ```xml ``` 例 ```xml ``` ## [](#lessthanorequaltocomparable)lessThanOrEqualTo(Comparable) 式が指定された値以下であることを確認します。 例 ```xml ``` 例 ```xml ``` ## [](#closetonumber-number)closeTo(Number, Number) 2 番目の数値をデルタ値として使用して、式が最初の数値に近いことを確認します。 つまり、最初の数値 +/- 2 番目の数値で定義された範囲に式が属することを確認します。 例 ```xml ``` ## [](#equaltoobject)equalTo(Object) 式が指定された値と等しいことを確認します。 例 ```xml ``` 例 ```xml ``` このマッチャーは Dataweave オブジェクトも受け入れます。 例 ```xml ``` マッチャーはキーとそれぞれの値が同じであることを検証します。 マッチャー内の順序は式内の順序と同じである必要があります。そうでないとアサーションは失敗します。 例 ```xml ``` 例 ```xml ``` ## [](#関連情報)関連情報 - [DataWeave の比較可能型](https://docs.mulesoft.com/dataweave/latest/dataweave-types#dw_type_comparable) - [MUnit マッチャー](https://docs.mulesoft.com/jp/munit/2.3/munit-matchers) - [コアマッチャーリファレンス](https://docs.mulesoft.com/jp/munit/2.3/core-matchers-reference) - [文字列マッチャーリファレンス](https://docs.mulesoft.com/jp/munit/2.3/string-matchers-reference) - [イテラブルおよびマップマッチャーリファレンス](https://docs.mulesoft.com/jp/munit/2.3/iterable-map-matchers-reference) # 比較可能マッチャーリファレンス
Comparable​ は、相互に比較できるすべての型を表す DataWeave 型です。
許可されるプリミティブは、整数や日付などのプリミティブ値を渡すことができる String、Number、Boolean、DateTime、LocalDateTime、LocalTime、Time、TimeZone です。
## [](#greaterthancomparable)greaterThan(Comparable) 式が指定された値より大きいことを確認します。 例 ```xml ``` 例 ```xml ``` ## [](#greaterthanorequaltocomparable)greaterThanOrEqualTo(Comparable) 式が指定された値以上であることを確認します。 例 ```xml ``` 例 ```xml ``` ## [](#lessthancomparable)lessThan(Comparable) 例 ```xml ``` 例 ```xml ``` ## [](#lessthanorequaltocomparable)lessThanOrEqualTo(Comparable) 式が指定された値以下であることを確認します。 例 ```xml ``` 例 ```xml ``` ## [](#closetonumber-number)closeTo(Number, Number) 2 番目の数値をデルタ値として使用して、式が最初の数値に近いことを確認します。 つまり、最初の数値 +/- 2 番目の数値で定義された範囲に式が属することを確認します。 例 ```xml ``` ## [](#equaltoobject)equalTo(Object) 式が指定された値と等しいことを確認します。 例 ```xml ``` 例 ```xml ``` このマッチャーは Dataweave オブジェクトも受け入れます。 例 ```xml ``` マッチャーはキーとそれぞれの値が同じであることを検証します。 マッチャー内の順序は式内の順序と同じである必要があります。そうでないとアサーションは失敗します。 例 ```xml ``` 例 ```xml ``` ## [](#関連情報)関連情報 - [DataWeave の比較可能型](https://docs.mulesoft.com/dataweave/latest/dataweave-types#dw_type_comparable) - [MUnit マッチャー](https://docs.mulesoft.com/jp/munit/3.0/munit-matchers) - [コアマッチャーリファレンス](https://docs.mulesoft.com/jp/munit/3.0/core-matchers-reference) - [文字列マッチャーリファレンス](https://docs.mulesoft.com/jp/munit/3.0/string-matchers-reference) - [イテラブルおよびマップマッチャーリファレンス](https://docs.mulesoft.com/jp/munit/3.0/iterable-map-matchers-reference) # 環境プロパティを使用したテスト 外部 API からデータを取得する次のフローがあり、MUnit テストの実行時にテスト環境からこのデータをコンシュームする必要があるとします。 ```xml ``` MUnit テストの実行時に QA API エンドポイントからデータをコンシュームする手順は次のとおりです。 1. 検証を実行する各環境のプロパティファイルに HTTP 設定値を抽出します。それらのプロパティファイルは、​`src/main/resources`​ に置く必要があります。 prod.properties ```xml http.host=dummy.restapiexample.com/api/v1/ http.port=80 ``` qa.properties ```xml http.host=dummy.qax.restapiexample.com/api/v1/ http.port=8081 ``` 環境ごとにプロパティファイルを設定できます。 2. 以前作成したファイルから環境プロパティを読み込むには、設定ファイルの ​`configuration-properties`​ グローバル設定を使用します。 ```xml ``` 3. HTTP 設定をプロパティファイル内で定義された変数に一致するプレースホルダーに置き換えます。 ```xml ``` 4. MUnit Maven プラグインで環境変数を定義します。 ```xml ... qa ... ``` MUnit テストの実行中、MUnit は​`qa`​ プロパティファイルからプロパティを読み込み、テスト環境に接続します。 # 環境プロパティを使用したテスト 外部 API からデータを取得する次のフローがあり、MUnit テストの実行時にテスト環境からこのデータをコンシュームする必要があるとします。 ```xml ``` MUnit テストの実行時に QA API エンドポイントからデータをコンシュームする手順は次のとおりです。 1. 検証を実行する各環境のプロパティファイルに HTTP 設定値を抽出します。それらのプロパティファイルは、​`src/main/resources`​ に置く必要があります。 prod.properties ```xml http.host=dummy.restapiexample.com/api/v1/ http.port=80 ``` qa.properties ```xml http.host=dummy.qax.restapiexample.com/api/v1/ http.port=8081 ``` 環境ごとにプロパティファイルを設定できます。 2. 以前作成したファイルから環境プロパティを読み込むには、設定ファイルの ​`configuration-properties`​ グローバル設定を使用します。 ```xml ``` 3. HTTP 設定をプロパティファイル内で定義された変数に一致するプレースホルダーに置き換えます。 ```xml ``` 4. MUnit Maven プラグインで環境変数を定義します。 ```xml ... qa ... ``` MUnit テストの実行中、MUnit は​`qa`​ プロパティファイルからプロパティを読み込み、テスト環境に接続します。