Index: [Article Count Order] [Thread]

Date:  Tue, 18 Nov 2003 09:20:04 +0900
From:  Ushiyama Kazuya <Ushiyama.Kazuya@....jp>
Subject:  [XP-jp:04751] RE:  mock object について
To:  "'extremeprogramming-jp@....jp'" <extremeprogramming-jp@....jp>
Message-Id:  <A6C63766AFF8104088809F662595356A632558@....jp>
X-Mail-Count: 04751

はずしている可能性が高いのですが、次は使えませんか?
http://dbunit.sourceforge.net/ 


-----Original Message-----
From: shima tetuo [mailto:mlmlml@....jp]
Sent: Monday, November 17, 2003 8:18 PM
To: extremeprogramming-jp@....jp
Subject: [XP-jp:04749] mock object について


tetuoです。

先日このメーリングリストでも少し話がありましたが、mock objectを利用して
のUnitテストについて少し皆さんの意見を聞きたい事があります。

やっている事:
データベースのデータを必要とするクラスにおいてのmock objectの利用

参考にしたサイト:
疑似オブジェクトによる単体テスト
http://www-6.ibm.com/jp/developerworks/java/030207/j_j-mocktest.html
Developing JDBC applications test-first
http://wiki.truemesh.com/mockobjects/DevelopingJdbcApplicationsTestFirst

理解している範囲:
データベース、ネットワーク、再現しづらい(又は意図的に実行出来ない)等の
環境的要因によってテストケースが複雑になる場合、これらの環境的要因となる
クラスのmock objectを作成、使用し、テスト対象となるクラスのメソッドが結
果ではなく、正しい処理で進んでいるかを確認する。

例:
1.2 Add a member to the list
http://wiki.truemesh.com/mockobjects/DevelopingJdbcApplicationsTestFirst#head-16eefd5c8e14b9b26f8ae433c7bb14e0f12633c8
ここではメーリングリストへ参加するメンバーの登録を実行するメソッドのテス
トを説明していますが、内容としては結果的にデータベースに登録された内容で
はなく下記のような最低限の処理を確認しています。

1.正しい追加SQLが発行されているか
2.SQLへのパラメータとしてメールアドレスと名前が設定されているか
3.Executeが1回だけ実行されているか
4.Closeが1回だけ実行されているか



ここまででの疑問点:
mock objectを使用する事により、この記事で言うと実データを操作することな
く、メソッドの挙動の正確さを確認しているだけだと思いますが、実際に実行さ
れるべき"SQL自体"の整合性はどのようにテストすべきなのでしょうか?
例:本当にエラーの発生しないSQLかどうかの確認等
簡単に言えば、mock objectを使用する事によって確認していない"結果"は、ど
こで確認すべきなのかと言う事です。



mock objectは使えるようになればかなりUnitテストの利用価値が高まると思う
ので、活発な意見が聞ければ幸いです。