DBUnitとは
DBUnitは、Javaプロジェクトにおいてデータベースへの更新などのUTを支援するためのフレームワークです。
データベースのテストデータのセットアップ、比較、および期待値の検証を簡単に行うことができます。これにより、データベース関連の機能やクエリが正しく動作するかどうかを確認できます。
私が以前参画していた現場ではテストデータ、期待値をExcelシートで管理していました。
最近になりネットで調べたところ、それらしい記事はいくつも出てくるのですがどれもその現場で使っていたものとは違う方法で実装していました。
管理しやすく見てわかりやすかったので今となってはもっとしっかり勉強しておくべきでした...。
わかったらまた記事更新します。
DBUnitのインストール
DBUnitを使用するには、まず依存関係をビルドツールに追加する必要があります。例えば、Mavenを使用している場合は、pom.xml
ファイルに依存関係を追加します。その後、適切なJUnitとDBUnitのバージョンを指定し、必要な設定を行います。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.dbunit</groupId>
<artifactId>dbunit</artifactId>
<version>2.7.0</version>
<scope>test</scope>
</dependency>
Excelシートでデータ投入
エクセルでデータを投入する場合は以下のように1行目をカラム名として下にテストデータを入力します。
ID | NAME | AGE | SALARY | JOB |
---|---|---|---|---|
1 | a | 20 | 200000 | employee |
2 | b | 26 | 270000 | manager |
3 | c | 38 | 350000 | areaManager |
注意点
-
Excelシートのクリーンアップ:
一度データを入力したセルを削除してもDBではそのセルが空白として認識されてしまいます。解消方法は一度シートを削除するしかなかったです。(行削除とかでもダメ) -
テストデータの整合性:
テストデータはテストケースごとに適切に整合性が保たれていることを確認しましょう。不整合があると、正確なテストが行えません。 -
既存データを退避してくれない:
基本的にはDBUnitではテスト実行時にはDBにある既存データを退避してからテストデータ投入して、テスト終了後には既存データを戻してくれるのですが、何度かデータを退避してくれないことがありました。
どうしてもテストコードに問題がないのに期待値と合わない場合はこの可能性を疑った方がいいかもしれません。
まとめ
DBUnitはデータベースユニットテストを簡素化し、効果的に行うためのツールです。注意点を踏まえて正しく使用することで、信頼性の高いデータベース関連のテストを実施できます。Junitさえわかっていれば学習コストもあまり高くなく、テストデータの可視性が高まるのでおすすめです。