TDDに入門した。一番良いのを写す。(続々)

WEB+DB PRESS vol.35 の写経の続き。今日は第6章で、モックとDIの話題でした。

S2フレームワークのMockInterceptorが凄く便利だと知りました。恥ずかしながら、モックを使ったユニットテストと聞いて想像していたのは、DIで差し挟むモックではない旧来のモノだったので、目からウロコでした。MockInterceptorを使ったテストコードをもっと読みたいです。

ところで、JUnitの使い方でハマりました。

今回使用しているJUnitは、バージョン3.8.2なので、テストメソッドに入る前の準備処理は、setUpメソッドに書いています。本文のpp.39-40では、テストケースが1つだけの次のような状態から、

  • テストケース(1つだけ)
    • setUp()
    • testDao名のプリフィクスとIDからDao呼び出しを行う()

setUpメソッドをリネームし、テストケースをさらに1つ追加しています。

  • テストケースその1
    • setUpDao名のプリフィクスとIDからDao呼び出しを行う() // 上のsetUp()をリネーム
    • testDao名のプリフィクスとIDからDao呼び出しを行う()
  • テストケースその2
    • setUpDao名のプリフィクスとIDからDao呼び出しを行う三角測量()
    • testDao名のプリフィクスとIDからDao呼び出しを行う三角測量()

この後、グリーンバーになることを確認するわけですが、手元ではレッドになりました。どうも、setUpメソッドが1つ、かつメソッド名が「setUp」のときだけ、setUpメソッドが実行されています。(1つ目のテストも通らなくなった。追加したテストケースその2を唯一のテストにしてみたら通ったので、追加したテストがおかしいわけではない)

実行の仕方が間違っているのか、1つのテストクラスで複数のsetUpを使うには何か設定が必要なのか・・・まだ分かっていません。情けない。。。