2.5. リクエスト単体テスト(メッセージ受信処理)¶
2.5.2. 主なクラス, リソース¶
名称 | 役割 | 作成単位 |
---|---|---|
リクエスト単体テストクラス | テストロジックを実装する。 | テスト対象クラス(Action)につき1つ作成 |
Excelファイル(テストデータ) | テーブルに格納する準備データや期待する結果、入力ファイルなど、テストデータを記載する。 | テストクラスにつき1つ作成 |
StandaloneTestSupportTemplate | バッチやメッセージング処理などコンテナ外で動作する処理のテスト実行環境を提供する。 | - |
MessagingRequestTestSupport | 同期応答メッセージ受信処理のリクエスト単体テストで必要となるテスト準備機能、各種アサートを提供する。 | - |
MessagingReceiveTestSupport | 応答不要メッセージ受信処理のリクエスト単体テストで必要となるテスト準備機能、各種アサートを提供する。 | - |
TestShot | データシートに定義されたテストケース1件分の情報を格納するクラス。 | - |
MainForRequestTesting | テスト用メインクラス。テスト実行時の差分を吸収する。 | - |
DbAccessTestSupport | DB準備データ投入などデータベースを使用するテストに必要な機能を提供する。 | - |
MQSupport | 電文作成などメッセージングのテストに必要な機能を提供する。 | - |
TestDataConvertor | Excelから読み込んだテストデータを編集するためのインタフェース。 必要に応じてデータ種別ごとにアーキテクトが実装する。 | - |
2.5.3. 構造¶
2.5.3.1. StandaloneTestSupportTemplate¶
バッチやメッセージング処理などコンテナ外で動作する処理のテスト実行環境を提供する。 テストデータを読み取り、全テストショット(TestShot )を実行する。
2.5.3.2. TestShot¶
1テストショットの情報保持とテストショット実行を行う。テストショットは以下の要素で成り立っている。
- 入力データの準備
- メインクラス起動
- 出力結果の確認
バッチやメッセージング処理などコンテナ外で動作する処理のテストにおいて 共通の準備処理、結果確認機能を提供する。
準備処理 結果確認 データベースのセットアップ データベース更新内容確認 ログ出力結果確認 ステータスコード確認
入力データ準備や結果確認ロジックはバッチや各種メッセージング処理ごとに異なるので方式に応じたカスタマイズが可能となっている。
2.5.3.3. MessagingRequestTestSupport¶
同期応答メッセージ受信処理テスト用のスーパクラス。アプリケーションプログラマは本クラスを継承してテストクラスを作成する。
本クラスは、TestShot が提供する準備処理、結果確認に以下の機能を追加する。
準備処理 結果確認 要求電文の作成 応答電文の内容確認
本クラスを使用することで、リクエスト単体テストのテストソース、テストデータを定型化でき、テストソース記述量を大きく削減できる。
具体的な使用方法は、リクエスト単体テストの実施方法(同期応答メッセージ受信処理)を参照。
ちなみに
本クラスは、入力データをキューにPUTする用途で、main側のコンポーネント定義ファイルを読み込む。
その際、nablarch.fw.messaging.FwHeaderDefinition
実装クラスは、
fwHeaderDefinition
という名前で登録されていなければならない。
これ以外の名称を使用する場合は、本クラスのgetFwHeaderDefinitionName()をオーバライドすることにより
本クラスが使用するFwHeaderDefinitionコンポーネント名を変更することができる。
2.5.3.4. MessagingReceiveTestSupport¶
応答不要メッセージ処理テスト用のスーパクラス。アプリケーションプログラマは本クラスを継承してテストクラスを作成する。
本クラスは、TestShot が提供する準備処理、結果確認に以下の機能を追加する。
準備処理 要求電文の作成
本クラスを使用することで、リクエスト単体テストのテストソース、テストデータを定型化でき、テストソース記述量を大きく削減できる。
具体的な使用方法は、リクエスト単体テストの実施方法(応答不要メッセージ受信処理)を参照。
2.5.3.5. MainForRequestTesting¶
リクエスト単体テスト用のメインクラス。本番用メインクラスとの主な差異は以下の通り。
- テスト用のコンポーネント設定ファイルからシステムリポジトリを初期化する。
- 常駐化機能を無効化する。
2.5.3.6. MQSupport¶
メッセージに関する操作を提供するクラス。 主に以下の機能を提供する。
- テストデータから要求電文を作成し、受信キューにPUTする。
- 応答電文を送信キューからGETし、テストデータの期待値と内容を比較する。
2.5.3.7. TestDataConvertor¶
Excelから読み込んだテストデータを編集するためのインタフェース。 必要に応じてXMLやJSONなどのデータ種別ごとにアーキテクトが実装する。
実装クラスでは以下の機能を実装する。
- Excelから読み込んだデータに対し任意の編集を行う。
- 編集を行ったデータを読み込むためのレイアウト定義データを動的に生成する。
本インタフェースを実装することで、例えばExcelに日本語で記述されたデータをURLエンコーディングする等の処理を追加することが可能である。
実装クラスは “TestDataConverter_<データ種別>” というキー名でテスト用のコンポーネント定義ファイルに登録する必要がある。
2.5.4. テストデータ¶
メッセージング処理固有のテストデータについて説明する。
2.5.4.1. メッセージ¶
基本的な記述方法は、リクエスト単体テストの実施方法(同期応答メッセージ受信処理) を参照。
ちなみに
パディングおよびバイナリデータの扱いは、固定長ファイルと同様である。