- - PR -
スタブとモックの違いについて
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-05-17 18:49
少し、Javaとは離れてしまいますが、どなたか御教授頂けたらなと思います。
只今、Junitを使用した単体テストについて勉強していますが、 どうしても、「スタブ」と「モック」についての違いがわかりません。 リンク先のページを参考にしてみたものの、 モックとスタブは使用するケースが違うというようなことが書かれていましたが、 理解するまでには至りませんでした。 どなたか、噛み砕いた形で説明して下さる方がいらっしゃいましたら、 御教授して頂けないでしょうか? よろしくお願い致します。 | ||||
|
投稿日時: 2007-05-17 19:14
文脈によって意味がちょっと変わってくるかもしれませんが、私が受ける印象は
スタブ:Java では RMI でリモートのオブジェクトを表現するローカルのプロキシオブジェクトを指すことが多い。実際の処理はリモートの実体に委譲する。 モック:テストやコンパイル用に用意されたダミーのクラス。実際に処理は行わず、場合によっては呼び出しが行われたかどうか、どんな引数で呼び出されたかなどを記録している 実際に処理をしてくる人:スタブ、ただのハリボテ:モック、といったところでしょうか。 | ||||
|
投稿日時: 2007-05-17 19:20
見た目が同じなのがスタブ、動きが同じなのがモック、かな。
| ||||
|
投稿日時: 2007-05-17 19:20
あれ、逆なのかな? | ||||
|
投稿日時: 2007-05-17 19:55
インギ様、lalupin4様、ご回答ありがとうございます。
分かり易いご回答ありがとうございます。 検討が外れていましたら、ご指摘して頂きたいのですが、単体テストを行なう上で、 スタブは、あらかじめ決まったダミーのデータを返すなり、処理を行なうといったことをし、 モックは、テストケースによって返す値を設定しておいて、モックのメソッドが呼ばれたら設定されている値を返すというようなものと解釈しました。 | ||||
|
投稿日時: 2007-05-17 19:56
スタブ:http://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%BF%E3%83%96
public int sum(int a, int b) { return a + b; } が実際の動作だとしましょう。 同時進行でどうしても別のクラスのそのメソッドが必要になった場合、 実際に同一の処理を書くと時間の無駄です。 そのときに作成するプログラムの適当なオブジェクトをかえすのがスタブです。 public int sum (int a, int b) { return 5; } の用に書きます。 モックはなんだkっけか・・・・ 実際の意味は木型だったはずだけど・・ STUB(切り株) | ||||
|
投稿日時: 2007-05-18 09:13
これが参考になるかな?
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?TestDouble | ||||
|
投稿日時: 2007-05-18 11:43
wikipediaでは
スタブ http://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%BF%E3%83%96 モック http://ja.wikipedia.org/wiki/%E6%9C%A8%E5%9E%8B なんとなく、機能の代替品がスタブで、外見の代替品がモックなのかなぁ。 携帯電話の店頭デモ品とかはモックアップ(モック)というけどスタブとは言わない。 車などの工業製品のデザインの検討用の実物模型もモックアップですよね。 モックアップは製造業全般の用語で、スタブはソフト業界の用語のようです。 |