Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

IT勉強会での初プレゼンなどお助けします!

勉強会でスピーカーをやりたいけど、プレゼンが初めて、苦手という方に無償でコーチできます。スライドのレビューや録画したリハへのアドバイスなどなど。Twitter@jyukutyoまでメンションでもDMでもお気軽にご連絡ください。

私はIT講師の経験があり、プレゼンはデブサミやJJUG CCCなど200人規模の経験が豊富で最大800人の前でプレゼンしました。海外ではDevoxxUSで。デブサミ2017では公募スピーカー1位、デブサミ関西2012アワードで5位となりました。

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

この本読んでます。

Next Generation Java Testing: TestNG and Advanced Concepts

Next Generation Java Testing: TestNG and Advanced Concepts


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


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

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


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


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


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