牛尾でございます。
>で、質問なんですが、テストファーストで開発を行うときに、テストメソッド
>が非常に書きづらい場面があると思います。
>たとえば、
>“テーブルAからデータを読み込み、読み込んだデータに基づいてテーブルB
>を更新する”、という処理がある場合、
>当然、テーブルAに入っているデータによって処理結果が変わってきます。
>どういう風にテストメソッドを書けばよいのでしょうか。
あまり参考になるかどうかわかりませんが、特に更新処理の場合私は
EJB2.0のCMPを使用していました。CMPのインターフェイスを継承した
Mockクラスをつくって、それに対してテストしていました。
また、移送部分などもあり、面倒なので、Relaxerでジェネレータを
つくり、項目定義、名称定義から、CMP本体(移送込み),DTO,DD,CreateTable…、
それに、テスト用Mockクラスまで吐かせていました。
他にはMock Makerなんていうツールもあるみたいです。
トルクや自作のO-Rマッパーでも工夫すればうまくテストできる
のでは?
検索系で動的に複雑な組み合わせの検索のSQLを組み立てる必要がある場合は検索キーを表すオブジェクト
などを作って(キーをセットするとWhere句以降のSQLがGETできる、、という感じ)
そのオブジェクトをテストしたりしました。
あとは某知り合いのスーパープログラマーは、もっと渋い方法を私におしえて
くれましたが、近々発表されるかもしれないので、この場ではふせておきます。:-)
>その処理をストアドプロシージャで実装するとなると、なおテストが
>書きにくいなぁと思っております。
ちなみにこんなんあるみたいですね。(無論つかってないけど)
http://c2.com/cgi/wiki?PlSqlUnit
以上です。