Index: [Article Count Order] [Thread]

Date:  Tue, 18 Nov 2003 14:17:04 +0900
From:  安井 <yasui@....jp>
Subject:  [XP-jp:04752] Re: mock object について
To:  extremeprogramming-jp@....jp
Message-Id:  <3FB9AB50.9010108@....jp>
In-Reply-To:  <20031117192756.E8C4.MLMLML@....jp>
References:  <20031117192756.E8C4.MLMLML@....jp>
X-Mail-Count: 04752

こんにちは、安井@Aspacです。

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

  わたしだったら、テストを以下のように分割します。

  i) SQLが正しいか。
  ii) 正しいパラメータが渡されているか。
      Executeが1回だけ実行されているか。
      Closeが1回だけ実行されているか。

  そのうえで、実際にSQLを発行するのは別クラスに分離して(DAO
パターン?)、そちらでは実際にDBに書き込んだ内容を確認しま
す。mock object で確認するのは ii) の箇所だけにします。

  ほかの皆さんはどんなふうにしますか?ほかのやりかたも知りた
いので、ぜひ教えてください。

> 簡単に言えば、mock objectを使用する事によって確認していない"結果"は、ど
> こで確認すべきなのかと言う事です。

  SQLを実行した結果自体は、どうしてもDBを使ってテストしたい
ですね。ご紹介の記事にあった、

> Of course, we will also need integration tests to check
> the whole process, but those should be more like an
> acceptance test for a larger module.
(意訳:もちろん処理全体のテストは必要になる。それはもっと大
きな単位での受け入れテストとして扱ったほうがよい。)

  という部分は、たとえば「ユーザー登録してからメールを送信す
ると新しいユーザにも届く」というテストで確認すればよい、と
言っているように思いました。でもそれっていきなり規模が大きく
なりすぎて、バグを追跡するのが難しくなるなあ。

-- 
アジアパシフィックシステム総研 ソリューション3部   安井 力
         http://www.asia.co.jp/            yasui@....jp
                            03-3985-3886 / FAX:03-3985-3778