DBunitでテストの自動化
第1回:Javaの単体テストツールDBUnitって何?
著者:プロトシステム 広谷 嘉巳
公開日:2008/03/10(月)
DBUnitって何?
読者の皆さんはデータベースにアクセスするプログラムのテストはどのように行っていますか?
Javaの単体テストの場合、JUnitを利用している方が多いのではないでしょうか。では、DBUnitはご存知でしょうか。DBUnitとは、プログラムの単体テストツール、それもデータベースにアクセスするプログラムの単体テストツールです。
本連載では、このDBUnitを利用してテストを進めていく方法を解説していきます。分かりやすいよう実際にテストを行うテスト担当者や開発者の目線で書き進めていき、ポイントとなる点も解説していきます。
さて、第1回では「そもそもDBUntとはなんぞや」を明らかにしていきましょう。
近年のシステムの開発においてデータベースは切っても切れない関係です。というよりも、「システム開発=(イコール)データベース利用」といっても過言ではないでしょう。
ここで1つ質問です。読者の皆さんはデータベースに絡むプログラムをどうやってテストしていますか?
プロジェクトによってそれぞれ多少の違いはあると思いますが、大体図1のような手順ではないでしょうか。
まず事前作業としてテストに関係するテーブルにテストデータをセットします。この時、場合によっては既存データの退避、または初期化を行ってからテストデータをセットする必要もあるでしょう。
次に、テスト対象のプログラムを実行し、期待した値(データ)と合致しているかを表示されている画面を見て確認します(目で確認する作業は、とても大変です。間違いがある可能性もあります)。最後に、テストでセットしたデータを削除します。またテストのためにデータを退避していた場合は、データの回復という作業も発生します。テストを繰り返す場合は、再び上記作業を1から行う形となります。これは多大な労力が必要です。
このような作業を自動化してくれる大変便利なツールが「DBUnit」なのです。
JUnitとの位置付け
そもそもDBUnitは一般的に広まっている単体テストツール「JUnit」を拡張したフレームワークです。そのためJUnitを知っている方ならすぐにDBUnitを理解できると思います。また本記事では基本から解説しますので、JUnitを知らない方でも本連載を読み終えた後は、すぐに実務で活用できるようになります。
さて、DBunitはJUnitを拡張したものであるため、JUnitの利点の1つである「自分が手を入れたプログラムは上手く動作したが、その他のプログラムが異常動作しないか(影響を受けてないか)」という不安も同じように払拭できます。
また、DBUnitを利用してテストを終えると「プログラム(クラス)間同士がJUnitと同じように関連性が希薄になる、すなわち疎結合になる」というとても良い副作用が発生します。
「JUnitじゃだめなのか?」という疑問を持たれる方もおられるでしょう。それらの疑問点について、次ページで説明していきましょう。 次のページ