MockObject の比較

勉強会でちょこっと発表しました。
お気軽勉強会ということで、発表資料をあまり用意せずにアドリブでやったのですが、かなり緊張してしまった。わかってもらえたかなぁ?

比較対象は EasyMock、jMock、MockInterceptor (Seasar2)、自作のモックなど。
機能的には EasyMock が使いやすそうな感じ。メソッド名を文字列で指定するのではなく、通常のメソッド呼び出しでできるのがイイ。
foo.bar(1) を呼び出して、戻り値 "a" を返すという設定をしたければ、

expect(foo.bar(1)).andReturn("a"));

みたいな感じで記述する。


クラスやメソッドの呼び出し順に設定をしないといけないのかなと思ったら、別クラス、別メソッドなら、特に設定順は関係ないみたい。
例えば、実装で、a.b() → a.c() → a.d() という呼び出し順だとしても、a.c() → a.b() → a.d() の順で設定してもよい。


呼び出し回数を、

expect(foo.bar(1)).andReturn("a").times(3);

のように指定できるけれど、戻り値 void の場合はどうするんだろう?