ここまでMuleの様々な機能を色々使ってフローを組んできました。今回からはそのフローをテストするためのMUnitについて何回かに分けて解説したいと思います。
MUnitとは
Muleフローの単体テストにはMUnitというテストフレームワークを使用します。名前の通りMuleのUnit Testであり、Eclipse上で動作するテストアプリケーションになります。JavaのテストフレームワークがJUnitであるように、Muleに特化したテストフレームワークになります。
テストケースを作成してみよう
では早速MUnitを使用したテストを作成してみます。
今回は以下の簡単なフローをMUnitでテストしてみることにします。
まずはテストクラスを作成してみます。MuleのテストクラスのことをMUnit テストスイートと言うらしいです。MUnit テストスイートはプロジェクトのsrc/test/munitの中に作成されます。
[File]→[New]→[MUnit Test]から作成します。
MUnit テストスイート名称の入力とテスト対象のフロー選択画面が表示されるので、テスト対象のフローを選択して名前を入力します。テストスイート名称については、命名規約にもよりますが、テスト対象フローのファイル名+「Test」という名前にするといいでしょう。
作成すると、以下のような形でテストフローが自動的に作成されます。また、Mule PaletteにはMUnitとMUnit Toolsというテストフローでのみ使えるモジュールが使用できるようになります。
テストフローは以下の3スコープで構成されています。
- Execution … フローを実行する領域
- Behavior … モックなどでテスト実行の際に事前設定する領域
- Validation … 実行したフローに対し、結果を検証するための領域
今回はごくシンプルなフローのため、Behaviorは使用しません。Behaviorの設定は次回以降に説明しようと思います。
Executionにはテスト対象となるフローを呼び出すためのFlow Referenceを配置します。また、今回は入力が伴うフローではありませんが、payloadやパラメータの設定などもこの領域で行います。
Validationにはフロー実行後の結果を検証するためのチェックをする箇所となります。今回のフローでは、payloadの値に「Hello Mule」という文字列を設定しているため、payloadの値を検証します。値の検証はMUnit ToolsのAsert Equalsコンポーネントを使用します。Validation領域にドラッグアンドドロップして、Actialにはpayloadを、Expectedには期待値(ここでは「Hello Mule」)を入れましょう。値が一致すればOK、値が異なっていればそのテストケースはNGということになります。
フロー名やコンポーネント名などを調整して、以下のようなテストフローが出来上がりました。これで簡単ではありますが、テストケースが完成です。
テスト実行
では、作成したテストケースを実行してみましょう。右クリックから[Run MUnit suite]で実行ができます。デバッグ実行したい場合は、[Debug MUnit suite]でもOKです。
テストを実行すると、テスト結果がMUnitというタブに表示されます。緑色のバーが出ていれば成功です。
テスト実行後、テスト対象となったフローを見てみると、それぞれのコンポーネントに緑色のチェックが表示されます。このチェックはテストの時に通過したコンポーネントを意味しており、エラーなく最後まで通過していることが視覚的に分かります。
次回は分岐パターンをやってみる
簡単ではありますが、MUnitでテストケースを作成して実際に実行させることができました。今回はシンプルな1本線のフローでしたが、次回はより複雑なケースのテストパターンを実施していきたいと思います。
コメント