Excelに引数の組み合わせ表を書いて1つずつ試していったのは昔の話。テスティングフレームワークを使って、こういったことはプログラムで処理するのが普通の時代。
そんなご時世に、Tomcat+Java+いずれかのDB という、ありがちな構成のサーバサイドでテスティングフレームワークを使うときのメモ。
問題になること
- DBの接続情報はTomcatのリソースとして定義したものを使用している。どうやってDBアクセスモジュールのテストをすればよい?
- DBにアクセスする部分のテストって、テストデータを用意したりしないといけないから、面倒。テストをバッチで繰り返し実行するとかなると、もっとたいへんそう。
- Webブラウザでアクセスしたような形でテストするには、どうすればよいのか?
- 処理結果をhtmlやxmlで返すのだが、どうチェックすればよいのか?
Code Barn Libraries And FrameworksのJUnit JNDI DataSource helper packageを使うと、Tomcatを動かさなくてもJNDIを使ったコードを動かせる。テスト用に別DBを用意して、上記packageの定義ファイルでテスト用DBを差すようにしておくとよい。
テスティングフレームワークでJunitや TestNgがあるように、DBのテスティングフレームワークとしてDbUnitや DbUnitNGがある。これらを使えば、テストデータの投入やDBのバックアップもOK。
次。do_Get()やdo_Post()を呼び出すようなテストを書けば、ブラウザでアクセスしたあとの処理をテストできる。 httpで送られる引数はどうするか?jmockitといったモックオブジェクトを使って、テスト対象のメソッドから呼び出されたときの値をセットしておく。また、HttpServletRequestWrapperやHttpServletResponseWrapperを使うと便利。
最後に、htmlやxmlのチェックにはHtmlUnitを使う。HttpUnitとどちらがいいのか、正直迷うのだが。
詳しい話は気が向いたら。