3.1.11. 取引単体テストの実施方法(バッチ)¶
バッチ処理の取引単体テストは、自動テストフレームワークを使用してテストを行う。 リクエスト単体テストを連続実行することにより、取引単位でのテストを行う。
テストクラスは以下の条件を満たすように作成する。
- テストクラスのパッケージはテスト対象取引のパッケージとする。
- <取引ID>Testというクラス名でテストクラスを作成する。
例えば、テスト対象取引の取引IDがB21AC01だとすると、テストクラスは以下のようになる。
package nablarch.sample.ss21AC01
import nablarch.test.core.batch.BatchRequestTestSupport;
// 中略
public class B21AC01Test extends BatchRequestTestSupport {
3.1.11.1. テストケース分割方針¶
基本的には、1シートにつき1テストケースとする。 以下、例外事項を示す。
3.1.11.1.1. 複雑なテストケースの場合¶
テストデータが大量であったり、1取引に含まれる処理が多い場合に、1つのシートに全てのテストデータを詰め込むと、シート内にデータが多くなり過ぎて、テストデータの可読性が落ちる場合がある。このような場合は、1ケースを複数シートに分割して記述しても良い。
3.1.11.1.2. 非常に簡単なテストケースの場合¶
非常に簡単なテストケースで、テストデータ量が少ない場合、 1シートに全テストケースを含めてもよい。
3.1.11.2. 基本的な記述方法¶
基本的には、1テストケースを1シートにまとめて記述する。1シート内に複数のバッチ実行を記述することにより、取引単位のテストとなる。
以下の例では、3つのバッチ(ファイル入力バッチ、ユーザ削除バッチ、ファイル出力バッチ)で構成される取引を実行している。
/** 正常終了するケース */
@Test
public void testSuccess() {
execute();
}
【testSuccessシート】
LIST_MAP=testShots
no | description | expectedStatusCode | setUpTable | setUpFile | expectedTable | expectedFile | requestPath |
---|---|---|---|---|---|---|---|
1 | ファイル入力 | 100 | default | default | default | fileInputBatch | |
2 | ユーザ削除 | 100 | default | default | userDeleteBatch | ||
3 | ファイル出力 | 100 | default | fileInputBatch | default | fileOutputBatch |
3.1.11.3. 1テストケースを複数シートを分割する場合¶
例えば、前項(基本的な記述方法)で例示したテストケースは、以下のように分割して記述可能である。
package nablarch.sample.ss21AA01
import org.junit.Test;
import nablarch.test.core.messaging.BatchRequestTestSupport;
// 中略
public class B21AA01Test extends BatchRequestTestSupport {
@Test
public void testSuccess() {
// 入力ファイルをテンポラリテーブルに登録
execute("testSuccess_fileInput");
// テンポラリテーブルの情報をユーザ関連テーブルを削除
execute("testSuccess_userDelete");
// 結果をファイル出力
execute("testSuccess_fileOutput");
}
【testSuccess_fileInputシート】
LIST_MAP=testShots
no | case | expectedStatusCode | setUpTable | setUpFile | requestPath |
---|---|---|---|---|---|
1 | ファイル入力 | 100 | default | default | fileInputBatch |
【testSuccess_userDeleteシート】
LIST_MAP=testShots
no | case | expectedStatusCode | setUpTable | expectedTable | requestPath |
---|---|---|---|---|---|
1 | ユーザ削除 | 100 | default | default | userDeleteBatch |
【testSuccess_fileOutputシート】
LIST_MAP=testShots
no | case | expectedStatusCode | setUpTable | outFile | requestPath |
---|---|---|---|---|---|
1 | ファイル出力 | 100 | default | default | fileOutputBatch |
3.1.11.4. 1シートに複数ケースを含める場合¶
非常に簡単なテストケースの場合は、複数にまとめてもよい。
以下の例では、2つのテストケース(通常のケースと入力データが0件のケース)を1つのシートで記述している
/** 正常終了するケース */
@Test
public void testSuccess() {
execute();
}
【testSuccessシート】
LIST_MAP=testShots
no | description | expectedStatusCode | setUpTable | setUpFile | expectedTable | expectedFile | requestPath |
---|---|---|---|---|---|---|---|
1-1 | ファイル入力 | 100 | shot1 | shot1 | fileInputBatch | ||
1-2 | ユーザ削除 | 100 | shot1 | userDeleteBatch | |||
2-1 | ファイル入力(0件) | 100 | shot2 | shot2 | fileInputBatch | ||
2-2 | ユーザ削除(0件) | 100 | shot2 | userDeleteBatch |
補足
グループIDを利用することで1シートに複数ケースのテストデータを記述できる。 詳細は、『一つのシートに複数テストケースのデータを記載したい』の項を参照。