読者です 読者をやめる 読者になる 読者になる

Fight the Future

何かを始めたら、半分成功したのと同じ

モックとスタブの違い〜Next Generation Java Testingより〜

pg

この本読んでます。

Next Generation Java Testing: TestNG and Advanced Concepts

Next Generation Java Testing: TestNG and Advanced Concepts


僕が考えていたよりもいい本。
作者はTestNGを作っている人。GooglerでAndroidの開発に携わっているようだ。


で、この本でモックとスタブの違いがようやくはっきりしてきた。
JUnit in Actionとかでも説明があったんだけど、イマイチ僕はモックとスタブの違いがわからなかった。

  • スタブは最小限の用件を満たした特定の結果でメソッドを置き換えるもの。
  • モックは一連の期待される流れから特定のメソッドに指定するもの。


スタブは置き換えるものだから1つしかないのが普通であるのに対して、モックはそのとき期待される動作を実現するものであるから、その流れの数(=ケースの数)だけモックも存在するということじゃないかな。
あるメソッドのモックは複数あることがあると。


モックはそのケースの期待値から定義されるものであって、スタブはもっと汎用的なものというイメージ。


モックはコンポーネント間の振る舞いややり取りをテストするものであって、スタブはテストの際に単純な実装で重い処理を置き換えるものとも考えられるとも本にあった。