Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerMUnit のベースファイルは、テストスイートファイルです。これは、XML ファイルで、Mule アプリケーションのプロジェクトの src/test/munit
ディレクトリにあります。MUnit テストスイートファイルの数に上限はありません。各 MUnit テストスイートファイルは、MUnit テストのコレクションで、他の MUnit テストスイートとは独立して実行されます。
MUnit テストスイートには、次のコンポーネントのいずれかの組み合わせが含まれています。
Before/After Suites
Before/After Test
MUnit テスト
バックグラウンドでは、各 MUnit テストスイートと Mule 設定ファイルに違いはありません。複数の Mule 最上位要素 (フロー、サブフロー、スクリプトなど) を使用できます。
MUnit 設定要素 (munit:config
) は、MUnit スイートファイルなどの Mule 設定ファイルを識別します。
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:munit="http://www.mulesoft.org/schema/mule/munit" xmlns:munit-tools="http://www.mulesoft.org/schema/mule/munit-tools"
xmlns="http://www.mulesoft.org/schema/mule/core"
xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/munit http://www.mulesoft.org/schema/mule/munit/current/mule-munit.xsd
http://www.mulesoft.org/schema/mule/munit-tools http://www.mulesoft.org/schema/mule/munit-tools/current/mule-munit-tools.xsd">
<munit:config name="An MUnit Suite" />
<!-- Tests -->
</mule>
MUnit テストは、MUnit テストスイートの基本的なプロセッサーです。これは、試行する各テストシナリオを表します。
MUnit テストは、3 つのスコープに分かれています。
スコープ | 説明 |
---|---|
Behavior |
Behavior スコープは、テストロジックを実行する前にすべての前提条件を設定します。 |
Execution |
Execution スコープには、次のスコープを実行する前にすべてのプロセスが終了するまで待機するテストロジックがあります。 |
検証 |
Validation スコープには、Execution スコープの結果に関連するすべての検証があります。 |
これらのスコープは省略可能です。
<munit:test name="exampleTest" description="Test to verify scenario 1">>
<munit:behavior>
<!-- Processors to set preconditions for the test -->
</munit:behavior>
<munit:execution>
<flow-ref name="exampleFlow"/>
</munit:execution>
<munit:validation>
<!-- Processors to validate result -->
</munit:validation>
</munit:test>
名前 | 説明 |
---|---|
|
テストの名前を定義します。名前は、テストスイート内で一意である必要があります。 |
|
テストするシナリオを説明します。 |
|
テストを無視する必要があるかどうかを定義します。存在しない場合、テストは無視されません。 |
|
テストに割り当てるタグのカンマ区切りリスト。 |
|
このテストの実行後に受け取る必要があるエラー種別を定義します。 |
|
このテストの実行後に受け取る必要がある例外を定義します。 |
|
このテストの実行後に受け取る必要があるエラーの説明を定義します。 |
|
テストが失敗するまでの最大実行時間 (ミリ秒) を定義します。 |
MUnit では、テストの説明を作成する必要があります。テストするシナリオの内容を反映する有益な説明を作成することが理想的です。この説明は、テストを実行する前のテストコンソールやレポートに表示されます。正確に内容が反映された説明ほど、読みやすく、エラーのトラブルシューティングが容易になります。
テストを停止しなければならない場合があります。どのような原因 (テストの失敗や不都合な副作用) でも関係ありません。MUnit では、特定のテストを無視できるため、コードを手動でコメントアウトする必要はありません。
任意のテストを無視するには、ブール型の ignore をテスト定義に追加します。
<munit:test name="my-flow-Test"
ignore="true"
description="Test to verify scenario 1">
</munit:test>
ignore 属性のデフォルト値は false
です。
Anypoint Studio では、[Ignore Test (テストを無視)] オプションをオンにできます。
現在の Mule バージョンまたは現在のオペレーティングシステムに基づいてテストを無視する式を使用することもできます。
<munit:test name="linux-ignore-test" ignore="#[Munit::osEqualTo('Mac OS X')]">
<munit:test name="mule-version-ignore-test" ignore="#[Munit::muleVersionPriorTo('4.1.4')]">
このテストは、Mule バージョンが 4.1.4
より前の場合に無視されます。他にも、muleVersionEqualTo
や muleVersionNewerThan
などの関数があります。
2 分経過しても完了しない場合、各 MUnit テストは自動的に失敗します。timeOut
属性を使用して、テストが失敗するまでのカスタム最大実行時間 (ミリ秒) を定義します。
<munit:test
name="custom-timeout-test"
description="This test has a timeout of 10 seconds"
timeOut="10000" >
....
</munit:test>
MUnit では、テストにタグを付けて、特定のタグのテストを実行できます。次に例を示します。
<munit:test
name="exampleTest"
description="A test that works as an example"
ignore="true"
tags="integration,http" >
…
</munit:test>
テストしているフローまたはサブフローが失敗して、特定のエラーをスローするかどうかを検証したいとします。MUnit では、次のように属性 expectedErrorType
、expectException
、expectedErrorDescription
を追加できます。
<munit:test name="MUnit-test-suite"
description="A test that works as an example"
expectedErrorType="RETRY_EXHAUSTED"
expectedException="java.lang.RuntimeException"
expectedErrorDescription="retries exhausted">
...
</munit:test>
expectedErrorType
属性では、テスト対象アプリケーション内で定義されているエラー ID を想定しています。
この属性では、アプリケーション内で定義されているエラー種別がスローされるかどうかを検証できます。アプリケーションに存在しない errorType
を定義すると、テストは実行されません。
<munit:test name="MUnit-test-suite"
description="Test Error Type"
expectedErrorType="FTP:ILLEGAL_PATH">
...
</munit:test>
このエラー種別のテストでは、FTP 操作で FTP:ILLEGAL_PATH
エラーがスローされることを想定しています。
どのフローも FTP Connector を使用していない場合、このエラー種別がアプリケーション内で定義されていないため、テストは実行されません。
Mule Runtime に属する ErrorTypes は、類型化する必要はありません。たとえば、MULE:RETRY_EXHAUSTED
は、単純に RETRY_EXHAUSTED
として定義できます。
属性 expectException
では、リテラル例外クラス名を想定しています。
想定している例外の正規クラス名を指定する必要があります。その後、MUnit はスローされた例外の根本原因が、想定しているクラス名の種類とまったく同じであるかどうかを検証します。
<munit:test name="testExceptions"
description="Test Exceptions"
expectedException="java.lang.RuntimeException">
...
</munit:test>
例外を想定するテストを定義したが、何もスローされない場合、テストは即座に失敗します。
属性 expectedErrorDescription は、エラーの説明を想定しています。
この属性では、スローされたエラーの説明が想定されるエラーの説明と同じか、スローされたエラーの説明に想定されるエラーの説明が含まれているかどうかを検証できます。エラーを想定するテストを定義したが、何もスローされない場合や、スローされたエラーの説明が一致しない場合、テストは即座に失敗します。
<munit:test name="testExpectedErrorDescription"
description="Test Expected Error Description Attribute"
expectedErrorDescription="An error has occurred">
...
</munit:test>
他のテストフレームワークと同様に、MUnit では MUnit テストまたは MUnit テストスイート全体の実行の前後に実行する処理やアクションを追加できる一連のスコープが提供されます。
Before および After Suite スコープ。
Before および After Test スコープ。
各コンポーネントの ID 項目は、すべてのアプリケーションで一意である必要があります。Before および After スコープは、それらの間で同じ名前を共有することも、アプリケーションのフローと同じ名前を持つこともできません。
詳細は、「Before/After スコープ」リファレンスを参照してください。