JUnit

各DB上でDML(insert,update,delete)を実行した際の挙動をJUnit5 DBUnitで試してみた

JUnit5 DBUnitを利用して、DML(insert文, update文, delete文)を実行すると、どのDB上で実行した場合でも、テスト実行後にロールバックされる。

今回は、JUnit5 DBUnitを利用して、各DB上でDML文を実行した時の動きを確認してみたので、そのサンプルプログラムを共有する。

前提条件

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

各DB上でtruncate文を実行した際の挙動をJUnit5 DBUnitで試してみたtruncate table文によって、テーブルの全データを削除することができるが、truncate table文を実行した後でロールバ...

また、下記記事のように、A5M2を利用して各DBに接続できていること。

A5M2を利用して各DBに接続してみたA5M2(A5:SQL Mk-2)は、SQL文の入力支援やER図作成などの機能を備えていて、Oracle、MySQL、PostgreSQ...

やってみたこと

  1. 作成したサンプルプログラムの構成
  2. Oracleの場合のソースコードとテスト実行結果
  3. MySQLの場合のソースコードとテスト実行結果
  4. PostgreSQLの場合のソースコードとテスト実行結果
  5. SQL Serverの場合のソースコードとテスト実行結果

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

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

databaseSetupTest.xlsx、expectedDatabaseTest.xlsxは、各DB上でのテストを行うUserDataDmlTestXXX.javaで利用するデータで、テスト実行前に設定するデータをdatabaseSetupTest.xlsxで、テスト実行後の想定データを設定するデータをexpectedDatabaseTest.xlsxで、それぞれ定義している。

また、上記赤枠以外のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/java/tree/master/junit5-dbunit-dml/demo

Oracleの場合のソースコードとテスト実行結果

テスト対象となるMapperの内容は、以下の通り。

また、Mapperのテストクラスの内容は以下の通りで、DML(insert文, update文, delete文)実行後の結果を検証している。

上記テストクラスの実行結果は以下の通りで、DML(insert文, update文, delete文)実行でロールバックされていることが確認できる。

<テストクラス実行前>
Oracle_実行前

<テストクラスの実行>
Oracle_実行結果

<テストクラス実行後>
Oracle_実行後

MySQLの場合のソースコードとテスト実行結果

テスト対象となるMapperの内容は、以下の通り。

また、Mapperのテストクラスの内容は以下の通りで、DML(insert文, update文, delete文)実行後の結果を検証している。

上記テストクラスの実行結果は以下の通りで、DML(insert文, update文, delete文)実行でロールバックされていることが確認できる。

<テストクラス実行前>
MySQL_実行前

<テストクラスの実行>
MySQL_実行結果

<テストクラス実行後>
MySQL_実行後



「AOMEI Partition Assistant Standard(無料)版」は便利なパーティション管理ツールだったハードディスクの記憶領域を論理的に分割し、分割された個々の領域のことを、パーティションといいます。 例えば、以下の図の場合、C/D...

PostgreSQLの場合のソースコードとテスト実行結果

テスト対象となるMapperの内容は、以下の通り。

また、Mapperのテストクラスの内容は以下の通りで、DML(insert文, update文, delete文)実行後の結果を検証している。

上記テストクラスの実行結果は以下の通りで、DML(insert文, update文, delete文)実行でロールバックされていることが確認できる。

<テストクラス実行前>
PostgreSQL_実行前

<テストクラスの実行>
PostgreSQL_実行結果

<テストクラス実行後>
PostgreSQL_実行後

SQL Serverの場合のソースコードとテスト実行結果

テスト対象となるMapperの内容は、以下の通り。

また、Mapperのテストクラスの内容は以下の通りで、DML(insert文, update文, delete文)実行後の結果を検証している。

上記テストクラスの実行結果は以下の通りで、DML(insert文, update文, delete文)実行でロールバックされていることが確認できる。

<テストクラス実行前>
SQLServer_実行前

<テストクラスの実行>
SQLServer_実行結果

<テストクラス実行後>
SQLServer_実行後

要点まとめ

  • JUnit5 DBUnitを利用して、DML(insert文, update文, delete文)を実行すると、どのDB上で実行した場合でも、テスト実行後にロールバックされる。