19. ジョブフローのテスト

このチュートリアルでは、ジョブフローのテストを作成する方法を説明していきます。

19.1. ジョブフローのテスト

ジョブフローのテストは基本的に フロー部品のテスト で説明した方法と同様にテストドライバーを利用してテストを作成していきます。 フロー部品とジョブフローでは一部テストドライバーで利用するAPIが異なるので、ここではその違いを中心に説明します。

19.2. ジョブフローのテストメソッドを作成する

以下は、ジョブフローのテストをテストドライバーで実行するテストメソッドの例です。

CategorySummaryJobTest.java
...
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] をインスタンス化します。

利用方法は フロー部品のテスト とほぼ同様ですが、以下の点が異なります。

  • 入出力の名前には、ジョブフローの注釈 ImportExportname に指定した値を利用する
  • runTest メソッドにはジョブフロークラス( .class )のみを指定する
    • InOut の指定は不要のため、各 inputoutput で戻り値を保持する必要はない。

JobFlowTester のメソッド setBatchArg はバッチ引数(バッチ実行時の引数)を設定します。 ジョブフローのインポータ記述やエクスポータ記述、データフロー内の演算子などでバッチ引数を利用している場合は、このメソッドを使ってバッチ引数を設定してください。

[1]com.asakusafw.testdriver.JobFlowTester