Index: [Article Count Order] [Thread]

Date:  Mon, 17 Nov 2003 20:18:09 +0900
From:  shima tetuo <mlmlml@....jp>
Subject:  [XP-jp:04749] mock object について
To:  extremeprogramming-jp@....jp
Message-Id:  <20031117192756.E8C4.MLMLML@....jp>
X-Mail-Count: 04749

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テストの利用価値が高まると思う
ので、活発な意見が聞ければ幸いです。