テスト駆動開発

テスト駆動とかテストファーストとかまぁ、そんなキーワードがありますね。実装より先にテスト、という習慣は未だつかないものの、とても興味があるプラクティスです。

というわけで、現在作成中のJiemamyですが、JUnitを使って単体テストケースを書いていこうと思った訳です。が、実はテストケースの(実践的な)書き方が分かっていない事に気づきました。こりゃまた単体テスト本でも読まなきゃいけないですかね。

まぁ簡単なところから、モデルオブジェクトのテストケースでも書いてみようかな、と思ったんですが、突然つまずいてしまいました。まぁ、簡単にsetter/getterがある訳ですが…、

  1. setXXX(テストメソッドはtestSetXXX) と getXXX(テストメソッドはtestGetXXX)って、同時にテストせざるを得なくないだろうか?
  2. 各テストメソッドのアタマでnewして、それに対してテストすべき? それとも、setup()で、TestCaseのフィールドにオブジェクト生成してから、そのインスタンスに対して色々テストすべき?
  3. つか、そもそもモデルオブジェクトにテストなんか要らないんじゃないか?
  4. フレームワーク等、外部に依存したクラスのテストってどうやるんだろう。例えば、裏にDBが無いと動かないメソッドとか。EclipseのWizardクラスとかDialogクラスとか…。エラーマーカーがつくかどうか、とか。

等、そんな疑問が。なんとも、初心者っぽい疑問だなぁ(笑)