現在のJava EE6開発では、単体試験にJUnit、もう少し複雑な試験(インテグレーションというのでしょうか)Backing BeanやEJBが絡むようなもの、では主に「Arqullian」を利用しています。
Arqullianに関しては日本語での情報もあり、かつ、有志の方がArqullianの公式サイトでも翻訳されており、スタートアップの敷居に関しては、英語しかない状況に比べると楽かと思います(^^)私もそれらに助けられて触ってみた人間です。
私がよく参考にさせて頂いたサイトは以下です。
ArqullianではさらにExtensionとして「Arqullian Persistence Extension」というものがあり、これを使うことで、BackingBean + EJB + DBまで含めた試験が可能となります。
例えば、現在、検索処理のテストでは以下のようなテストをしています。
非常に嬉しいのは、テスト用のデータをXML(他にXLS,YAML,JSONも可能らしいです、私は使ってないですが)で定義して、アノテーションをちょっと入れるだけで
- テスト実行時に動的に自動でレコードを挿入
- テストが終わったら自動で消してくれる
ことができる点です(^^)
XMLは以下のような感じで
xml version="1.0" encoding="UTF-8"
<dataset>
<XxxTable XxxID="XXXXXX"
XxxName="hogehoge"
… テーブルの属性繰り返し …
CreateUser="makimaki"
UpdateUser="makimaki"
CreateDate="2013-3-3 20:00:00.000"
UpdateDate="2013-3-4 22:00:00.000" />
</dataset>
Arqullianのテストコード(抜粋)は以下のような感じです。
@Test
@UsingDataSet("上で定義したXMLのデータ.xml")
@Cleanup(phase= TestExecutionPhase.AFTER, strategy= CleanupStrategy.USED_ROWS_ONLY)
public void XxxマスタでXxxNameで前方一致の検索するテスト(){
…テストコード…
}
例えば検索処理の場合には、この挿入レコードを引っかけるようなテストコードを書きます。
なので、本番さながら、というか、試験環境のデータベースを利用しながら、実行ができる優れものです。
これのおかげで、検索処理のリグレッション試験が本当に楽になって(あ、検索に限らずですが)、リファクタリングやクエリの書き換えも安心してできるようになっています。
過去プロジェクトでは、こうした自動テストもなく、毎回手動のリグレッションをしていました。
検索処理は、入力された条件の組合せだけでも結構なテスト量が必要で、全ケースを毎回手でやるのは限界がありました(^^;
環境設定でつまづくと時間を食ってしまったり、テストコードを書くコストがどうしても増えてしまうのですが、運用保守系のシステムは息が長いし、リリース後の改造も多いので、こうした仕組みを早い段階で入れておくのが(自分自身の過去の経験的にも)いいなぁ、と個人的には思います。
環境設定についてはどこかのタイミングでまとめたいなと思っています。