19. ジョブフローのテスト¶
このチュートリアルでは、ジョブフローのテストを作成する方法を説明していきます。
19.1. ジョブフローのテスト¶
ジョブフローのテストは基本的に フロー部品のテスト で説明した方法と同様にテストドライバーを利用してテストを作成していきます。 フロー部品とジョブフローでは一部テストドライバーで利用するAPIが異なるので、ここではその違いを中心に説明します。
19.2. ジョブフローのテストメソッドを作成する¶
以下は、ジョブフローのテストをテストドライバーで実行するテストメソッドの例です。
...
import com.asakusafw.testdriver.JobFlowTester;
...
private void run(String dataSet) {
JobFlowTester tester = new JobFlowTester(getClass());
tester.setBatchArg("date", "testing");
tester.input("storeInfo", StoreInfo.class)
.prepare("masters.xls#store_info");
tester.input("itemInfo", ItemInfo.class)
.prepare("masters.xls#item_info");
tester.input("salesDetail", SalesDetail.class)
.prepare(dataSet + "#sales_detail");
tester.output("categorySummary", CategorySummary.class)
.verify(dataSet + "#result", dataSet + "#result_rule");
tester.output("errorRecord", ErrorRecord.class)
.dumpActual("build/dump/error_" + dataSet);
tester.runTest(CategorySummaryJob.class);
}
ジョブフローをテストするには、テストドライバー用のAPIクラス JobFlowTester
[1] をインスタンス化します。
利用方法は フロー部品のテスト とほぼ同様ですが、以下の点が異なります。
- 入出力の名前には、ジョブフローの注釈
Import
やExport
のname
に指定した値を利用する runTest
メソッドにはジョブフロークラス(.class
)のみを指定するIn
やOut
の指定は不要のため、各input
やoutput
で戻り値を保持する必要はない。
JobFlowTester
のメソッド setBatchArg
はバッチ引数(バッチ実行時の引数)を設定します。
ジョブフローのインポータ記述やエクスポータ記述、データフロー内の演算子などでバッチ引数を利用している場合は、このメソッドを使ってバッチ引数を設定してください。
[1] | com.asakusafw.testdriver.JobFlowTester |