DbSetupは、こう書くと分かりやすい

JUnitで、テストデータ登録を何でやるのが効率良いかな?と思ったときに
見つけたのが、DbSetup

Javaで、流れるようにデータの定義が書けるテストフレームワークだ。

何ケースか書いてみて、思ったのは

「テストに関するデータパターンのみcolumsとvaluesで書くのが分かりやすい」

ということ。

具体的には

  • テストに関係がないカラムに関しては共通の項目は書かない(Nullで入れる)、もしくは、withDefaultValueメソッドで定義する
  • テストパターンに関係するカラムについては、columsとvaluesで書く
insertInto("order")
    // testに関係ない項目は固定で定義(NullでOKなら書かない)
    .withDefaultValue("user_id", 111)
    .withDefaultValue("user_name", "tarou")
    // testに関係する項目のみ書く 
    .columns("order", "order_date", "order_type")
    .values("111-001","2017-04-01", "1")
    .values("111-002","2017-04-01", "2")
    .values("111-003","2017-04-02", "2")
    .build();

こうすることで、見る必要のないテストデータとテストするべきデータが
分離され、テストが見やすく、テストコードの修正も簡単になる。

ちなみにJava8で、insert文を作る場合は、以下のような感じで書くことになると思うが、こちらより可読性や保守性は高いと思う。

asList("'111-001', TO_DATE('2017-04-01', 'YYYY-MM-DD'), 1",
       "'111-002', TO_DATE('2017-04-01', 'YYYY-MM-DD'), 2",
       "'111-003', TO_DATE('2017-04-02', 'YYYY-MM-DD'), 2").forEach(it -> {
           // insertメソッドは別に定義が必要
           insert("insert into table_name values (" + it + ");");
       }

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です