xxxUnitを使った単体テストをするとき、モックというのが便利だと聞きます。

しかしモックというモノがどういうもので、どういう局面の時に効力を発揮するのかが、ピンと来ません。

そこで単体テストを実際に行っていて、かつモックというものを活用している人はどこが便利で、どういう局面で使っているのでしょうか。

体験談や、わかりやすい説明のあるウェブページを教えてください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/03/12 16:28:38
  • 終了:2007/03/19 16:30:03

回答(2件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402007/03/12 23:25:26

ポイント35pt

KikainekoMocker Project Web Site

リンク先はモックオブジェクトの自動生成ツールですが、大まかなところは説明されていると思います。


主な目的として、

  • まだ完成していないモジュールの代わりとして
  • 外部リソース(DB等)に依存するモジュールだとテストしにくいのでダミーとして

作成することが多いのではないでしょうか。

id:takets

ありがとうございました。

確かにDBの仕様が固まっていない場合は、とりあえずこの数字を返す処理を行う、というのが気軽に出来ると有効ですね。

2007/03/13 21:54:40
id:smeghead No.2

smeghead回答回数11ベストアンサー獲得回数02007/03/13 12:58:03

ポイント35pt

> 外部リソース(DB等)に依存するモジュールだとテストしにくいのでダミーとして

b-wind さんの補足のような内容ですが。


テスト対象のロジックを絞り込むために使用しています。


クラスAと、クラスAを使用(クラスAのロジックに依存)するクラスBを作成したとします。

・クラスAのテスト作成

クラスAの単体テストの対象はクラスAのロジックのみであり、普通に(mockを使用せずに)xUnitを使用してテストコードを書くことができます。


・クラスBのテスト作成

本来テスト対象は、クラスBのロジックのみであり、クラスAの処理結果に依らずテストが行なえることが望ましいです。

しかし、クラスBのロジックはクラスAの処理結果に依存していますので、純粋にクラスBに対しての単体テストの対象をクラスBのロジックのみに限定することができません。


ここで、クラスAのmockを使用することで、実際のクラスAの処理結果に依存することなく、純粋にクラスBのロジックに対してのテストを行なうことができるようになります。


クラスAがDBアクセスするクラスで、クラスBがサービスクラスに該当することが多いと思います。

jmockを使用したことがあります。

http://www.jmock.org/

id:takets

ありがとうございました。

実例を交えた、わかりやすい説明でした。

2007/03/13 22:01:49

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません