単体テスト自動化 DbSetupでテストデータを登録する方法

シェアする

前回作成したJUnitプロジェクトにDbSetupを追加して、テストデータを登録する方法を説明します。

プロジェクトの作成がまだの方は下記を参考にプロジェクトを作成してください。

単体テスト自動化 JUnitプロジェクトの作成手順
JUnitを使った単体テストを行うプロジェクトの作成手順を説明します。 環境設定 IDEは、NetBeansを使用しますのでオ...

使用するRDBは、以前セットアップしたSQLiteを使用することにします。

Java SQLiteを使ってDB環境を簡単に構築する
Java Gold試験で出題されるJDBCを学ぶために、ローカル環境にDB環境を構築します。 データベースといえば、Oracle/My...

OracleでもSQLServerでもdb接続処理が異なるのみで、DbSetupについてはどのRDBを使用してもやり方は同じです。

POMの設定

JUnitと同じように、pom.xmlにDbSetupのdependencyを追加します。 mavenリポジトリはこちらになります。

DB接続用クラスを作成

テストクラス内にDB接続処理を実装してもいいんですが、テストクラスが多くなった場合を考慮して別クラス(DbConnection.java)で下記のように実装します。変数:destをprotectedにしているのは、テストクラス側でDbConnectionを継承して使用するためです。

テストクラスの作成

テストクラス側は、下記で実行されるよう実装します。

  1. テスト開始前に使用するテーブルのデータをdeleteする
  2. テーブル:Customerにデータを2件追加する
  3. Customerからデータを取得し2件追加されているか確認する
  4. テスト終了後に使用したテーブルのデータをdeleteする

テスト実行すると、hogeとfugaが追加されていることが確認できました。

単純に実装すると上記のようなコードになりますが、テーブルや追加データが多くなると、何度もnew DbSetupとdbSetup.launch()を書かなくてはならず、ステップ数が増加してしまいます。

よって、次章でリファクタリングを行います。

テストクラスのリファクタリング

冗長であるnew DbSetupとdbSetup.launch() のリファクタリングを行います。

やることは、親クラスのDbConnectionに共通メソッドを作成することです。

まずは、親クラスのDbConnectionは下記のようになります。

dbSetupメソッドを2つ追加し、可変長引数を受け取るメソッドを子クラスで使用できるようにします。そして、受け取ったOperationを1件ずつprivateメソッドのdbSetupへ渡して冗長であったコードを実行するようにしました。

テストクラス側は下記のようになります。

冗長だったnew DbSetupとdbSetup.launch() が削除されてスッキリしました

次回のDbUnitについて

今回作成したテストメソッドは下記処理を行っています。

  1. Customerテーブルにhogeとfugaを2件追加
  2. hogeが追加されていることを確認
  3. fugaが追加されていることを確認

次回は、上記処理を下記処理に変更し、DbUnitを使ってCustomerテーブルの比較テストを行います。

  1. Customerテーブルにhogeとfugaを2件追加
  2. hogeをyamadaに更新
  3. 期待値ファイル(xml)とCustomerテーブルの比較確認

つまり、db更新処理後の値が正しい値で更新されているかの確認のやり方の説明になります。

単体テスト自動化 DbUnitでテーブル比較を行う方法
前回のDbSetupの続きとなります。本記事は、db更新処理後の値が正しい値で更新されているかをDbUnitを使って確認する方法の説明にな...
スポンサーリンク
PC用広告

フォローする

スポンサーリンク
PC用広告