JUnit

各DB上でtruncate文を実行した際の挙動をJUnit5 DBUnitで試してみた

truncate table文によって、テーブルの全データを削除することができるが、truncate table文を実行した後でロールバックできるかどうかは、DBの種類によって異なる。

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

前提条件

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

各DBのIN句で1000件を超える項目を指定してみたOracleデータベースの場合、IN句で1000件を超える項目を指定するとエラーになってしまうが、他のDBではIN句に1001件の項目を...
JUnit5でDBUnitの@DatabaseSetupや@ExpectedDatabaseというアノテーションを利用してみたデータベースのデータ検索・追加・更新・削除のテストを実施するDBUnitというツールで利用する@DatabaseSetupや@Expec...

やってみたこと

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

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

作成したサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成
なお、上記の赤枠は、このブログで掲載するソースコードを示す。

test.propertiesの内容は以下の通りで、JUnit5 DBUnitで利用する各DBの接続先を示していて、各DBの接続定義となるDemoTest~Configクラスで参照している。

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



サラリーマン型フリーランスSEという働き方でお金の不安を解消しよう先日、「サラリーマン型フリーランスSE」という働き方を紹介するYouTube動画を視聴しましたので、その内容をご紹介します。 「サ...

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

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

また、JUnit5 DBUnitで利用するDB接続先設定の内容は、以下の通り。

さらに、Mapperのテストクラスの内容は以下の通りで、truncate table文とその実行前後のデータを取得している。

上記テストクラスの実行結果は以下の通りで、truncate table文の実行でコミットされていることが確認できる。

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

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

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



ウズウズカレッジJavaコースはわかりやすい動画教材と充実した就業サポートで優良企業を目指せるプログラミングスクールだったJavaは、世界中で広く使われていて、現在の需要が高く将来性もある開発言語になります。 https://www.acrovision....

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

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

また、JUnit5 DBUnitで利用するDB接続先設定の内容は、以下の通り。

さらに、Mapperのテストクラスの内容は以下の通りで、truncate table文とその実行前後のデータを取得している。

上記テストクラスの実行結果は以下の通りで、truncate table文の実行でコミットされていることが確認できる。

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

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

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



「EaseUS Todo Backup」は様々な形でバックアップ取得が行える便利ツールだったパソコン内のデータを、ファイル/パーティション/ディスク等の様々な単位でバックアップしたり、バックアップのスケジュール設定や暗号化設定も...

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

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

また、JUnit5 DBUnitで利用するDB接続先設定の内容は、以下の通り。

さらに、Mapperのテストクラスの内容は以下の通りで、truncate table文とその実行前後のデータを取得している。

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

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

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

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



「FlexClip」はテンプレートとして利用できる動画・画像・音楽などが充実した動画編集ツールだったテンプレートとして利用できるテキスト・動画・画像・音楽など(いずれも著作権フリー)が充実している動画編集ツールの一つに、「FlexCli...

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

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

また、JUnit5 DBUnitで利用するDB接続先設定の内容は、以下の通り。

さらに、Mapperのテストクラスの内容は以下の通りで、truncate table文とその実行前後のデータを取得している。

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

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

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

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

要点まとめ

  • JUnit5 DBUnitを利用して、truncate table文を実行すると、OracleとMySQLの場合はコミットされ、PostgreSQLとSQL Serverの場合はロールバックされることが確認できる。