JUnit

JUnit4でDBUnitの@DatabaseSetupや@ExpectedDatabaseというアノテーションを利用してみた

DBUnitというツールを利用すると、データベースのデータ検索・追加・更新・削除のテストを実施できるが、その際、テスト前にテストデータを設定する@DatabaseSetupアノテーションや、テスト後のデータを検証する@ExpectedDatabaseアノテーションを利用すると便利である。

今回は、JUnit4でDBUnitの@DatabaseSetupや@ExpectedDatabaseというアノテーションを利用したテストを行うサンプルプログラムを作成してみたので、共有する。

前提条件

下記記事の実装が完了していること。

Oracle上でSpring Bootの@Transactionalアノテーションの挙動を調べてみたSpring Bootを利用したアプリケーションでDB接続を利用する際、@Transactionalアノテーションをつけたメソッド内でD...

作成したサンプルプログラムの内容

作成したサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成
なお、上記の赤枠は、前提条件のプログラムから追加・変更したプログラムである。

build.gradleの内容は以下の通りで、DBUnitやMyBatisのテストを行うためのライブラリを追加している。

ユーザーデータエンティティのクラスは以下の通りで、@NoArgsConstructorや@AllArgsConstructorアノテーションを付与している。

ユーザーデータテーブルにアクセスするMapperは以下の通りで、findAllメソッド・createメソッドを追加している。

UserDataTest1クラスの内容は以下の通りで、@DatabaseSetupアノテーションの検証を行っている。

UserDataTest2クラスの内容は以下の通りで、@DatabaseSetupと@ExpectedDatabaseのアノテーションの検証を行っている。

UserDataTest1クラス・UserDataTest2クラスの@DatabaseSetupアノテーションで読み込んでいるエクセルデータの内容は、以下の通り。
databaseSetupTest_excel

UserDataTest1クラス・UserDataTest2クラスの@ExpectedDatabaseアノテーションで検証しているエクセルデータの内容は、以下の通り。
expectedDatabaseTest_excel

UserDataTest1クラス・UserDataTest2クラスで呼ばれる、DB接続定義を行うクラスの内容は、以下の通り。

また、上記クラスで読み込むDB接続は、以下のプロパティファイルから読み込んでいる。

UserDataTest1クラス・UserDataTest2クラスで呼ばれる、エクセルデータをDBに設定する定義を行うクラスの内容は、以下の通り。

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/java/tree/master/junit4-dbunit-annotation/demo



【PR】「Filmora」は初心者でも本格的な動画編集ができる大変便利なツールだった「Filmora」は初心者でも使いやすい動画編集ツールで、テンプレートとして利用できるテキスト・動画・音楽などが充実していると共に、複数...

サンプルプログラムの実行結果

サンプルプログラムの実行結果は、以下の通り。

1) テスト実行前のデータは、以下の通り。
サンプルプログラムの実行結果_1

2) UserDataTest1クラスを実行した時のログ出力内容は、以下の通りで、databaseSetupTest.xlsxのデータがDBに設定されたことが確認できる。
サンプルプログラムの実行結果_2

3) UserDataTest2クラスを実行した時のログ出力内容は、以下の通りで、テスト実行後にexpectedDatabaseTest.xlsxのデータがDBに設定されていることが確認できる。
サンプルプログラムの実行結果_3

4) テスト実行後のデータは、以下の通りで、実際のDBデータは更新されずロールバックされることが確認できる。
サンプルプログラムの実行結果_4

要点まとめ

  • DBUnitというツールを利用してDB回りのテストを行う際、テスト前にテストデータを設定する@DatabaseSetupアノテーションや、テスト後のデータを検証する@ExpectedDatabaseアノテーションを利用すると便利である。