こんにちは、阿部です。
>しかし、実際に使うメソッドでは、ファイルの入出力や、DBの読み書き、
>など、assert文ではテストできない又はし難いメソッドが多く存在します。
私はこういうのは複合テストにしてしまいます。例えば
「insert直後にselectして取得した全データオブジェクトをassertEqualsで
比較する」とか、そういうテストです。もちろん、ファイルも書き出したら
直後に読み込んで内容チェックです。
当然、こういうテストをするからにはDBとの橋渡し役となるデータクラス
などはequals(),hashCode(),clone()をきっちり実装して、個別にテストが
必要です。EJBにデータクラスを渡すときにはSerializableインターフェースが
必要ですから、「ファイルにシリアライズして、別のオブジェクトに復元して
equals()で比較」なんてテストまでやりました。
私は自分の能力(というか、コンスタントに正確なコードを書く集中力)
を疑っているので、テストは執拗に、できるだけ多くのパターンを、と
考えています。流れとしては
1.単純なテストを書く
2.機能を実装する
3.以上を繰り返して全機能を実装する
4.思いつく限りのありとあらゆるテストを追加して品質を上げる
5.ついでにリファクタリングで保守性も上げる
6.4.5を繰り返す
7.完成
というパターンです。なんせ上司の目があるので、テストコードを書くのに
時間を取られて機能の実装が遅い、というのはご法度ですから、執拗なテスト
などというものは後回しになります。
リリースはこまめにします。全部終わるまでリリースしないと他の部署との
連携に齟齬が発生するので、1.2を繰り返しながら定期的にリリースします。
-------------------------------------------------------------
Takashi Abe <abetaka@....jp>
HP: http://homepage1.nifty.com/taka-page/
合気道 薫友会 : http://homepage2.nifty.com/kun-yu/index.html
-------------------------------------------------------------