21. バッチのテスト¶
このチュートリアルでは、バッチのテストを作成する方法を説明していきます。
21.1. バッチのテスト¶
バッチのテストも基本的に フロー部品のテスト や ジョブフローのテスト で説明した方法と同様にテストドライバーを利用してテストを作成していきますが、 一部テストドライバーで利用するAPIが異なるので、ここではその違いを中心に説明します。
21.2. バッチのテストメソッドを作成する¶
以下は、バッチのテストをテストドライバーで実行するテストメソッドの例です。
...
import com.asakusafw.testdriver.BatchTester;
...
private void run(String dataSet) {
BatchTester tester = new BatchTester(getClass());
tester.setBatchArg("date", "testing");
tester.jobflow("byCategory").input("storeInfo", StoreInfo.class)
.prepare("masters.xls#store_info");
tester.jobflow("byCategory").input("itemInfo", ItemInfo.class)
.prepare("masters.xls#item_info");
tester.jobflow("byCategory").input("salesDetail", SalesDetail.class)
.prepare(dataSet + "#sales_detail");
tester.jobflow("byCategory").output("categorySummary", CategorySummary.class)
.verify(dataSet + "#result", dataSet + "#result_rule");
tester.jobflow("byCategory").output("errorRecord", ErrorRecord.class)
.dumpActual("build/dump/error_" + dataSet);
tester.runTest(SummarizeBatch.class);
}
バッチをテストするには、テストドライバー用のAPIクラス BatchTester
[1] をインスタンス化します。
利用方法は フロー部品のテスト や ジョブフローのテスト とほぼ同様ですが、以下の点が異なります。
- 入出力を指定する前に、どのジョブフローに対するテストデータなのかを指定する
jobflow
メソッドを経由して入出力を利用するジョブフローのID(注釈@JobFlow
のname
に指定した文字列)を指定する
runTest
メソッドにはバッチクラス(.class
)を指定するIn
やOut
の指定は不要のため、各input
やoutput
で戻り値を保持する必要はない。
[1] | com.asakusafw.testdriver.BatchTester |