*

JUnit入門その5[DBUnitの概要説明]

公開日: : 最終更新日:2016/12/05 DBUnit, Eclipse, Java, JUnit ,


スポンサードリンク



前回エントリーでは「JUnit入門その4[Eclipse4.4のJUnitプラグインとDBUnitの併用(環境構築と基本)]」と題してDBUnitをEclipseで動作させるための環境構築の説明をさせていただきました。

順番が逆になってしまったのですが、本エントリーでは、DBUnitの概要説明をさせていただきます。

本エントリーの内容は以下の通りです。

  1. DBUnitとは
  2. DBUniを利用したユニットテストの概要


1 DBUnitとは

DBUnitの概説

JavaでDB関連のコードのユニットテストを行うためのライブラリです。

一般的にはJUnitと併用することが多いと言え、JUnitとの親和性が高いです。
DBUnitでは、JUnitの4系から導入されたアノテーション(@Before、@After等)を利用することを前提としていますので、違和感なくJUnitとDBUnitを併用したテストケースが実装可能です。

DBUnitで提供されている機能

前提値データをDBにセットアップ可能

XMLやExcelファイルで作成された前提データをDBにセットすることが可能です。
前提値データ(Excelファイル)の作成例は後述させていただきます。

DBUnitがデータをセットアップする時に、DBに登録されているデータと前提値データをどう扱うかは以下のオプションで指定可能です。

オプション 説明
DatabaseOperation.DELETE/td> 前提値データで指定されているテーブルから、前提データで指定されている行を削除する。
DatabaseOperation.DELETE_ALL 前提値データで指定されているテーブルに登録されているデータを全て削除する。
DatabaseOperation.CLEAN_INSERT DatabaseOperation.DELETE_ALL実施後に、前提値データをインサートする。
DatabaseOperation.INSERT 前提値データをインサートする。一意制約違反となるデータが既に登録されている場合は例外が発生する。
DatabaseOperation.UPDATE 前提値データでアップデートする。前提データのキーに対応するデータが登録されていない場合は例外が発生する。
DatabaseOperation.REFRESH 前提値データでアップデートorインサートする。

テスト対象の処理実行後のDBの値を検証可能

期待値データ(前提値データと同じ形式のファイル)を作成し、DBUnitの機能を利用することで、DBに格納されているデータと期待値データが同じであるかを検証します。

値が異なっていればテスト失敗となります。

なお、期待値データに記載されているテーブルとカラムとそれに対応する値のみが検証の対象となります。
検証を行いたくないカラムは期待値データに記載しなればOKです。

少し応用的な使い方をすれば、期待値データに存在するカラムのデータを検証から除外する事も可能となっています。

前提値データの作成例

前提値と書いてありますが、期待値データの作成方法も全く同じです。

例として「USERTBL」、「DEPARTMENTTBL」の2テーブルのデータを含む前提値データを例として説明させていただきます。

Excel、Excelと言っていますが、xls形式であればOpen Officeで作成したファイルでも利用可能となっており、スクリーンショットはOpen Officeで取得した物となっています。

スクリーンショット 2015-03-27 16.11.21

上記の画像の通り、シート名にテーブル名を指定します。
「USERTBL」、「DEPARTMENTTBL」の2テーブルの前提値データですので対応するシートが存在しています。

各シート内で、対応するテーブルのカラムとデータを指定します。
スクリーンショット 2015-03-27 16.13.21

同じように「DEPARTMENTTBL」シートでも対応するテーブルのカラムとデータを指定します。
スクリーンショット 2015-03-27 19.43.51

テーブルのカラムは全て記載する必要はございません。DBにインサート文を発効できる情報さえあればOKとなります。
Not Null制約が付与されたカラム等は、カラムと対応する値を指定する必要があります。

DBUnitが処理するシートの順番は、左から右となりますので、DBで参照整合性を利用している場合はシートの順番を適正にする必要があります。

2 DBUniを利用したユニットテストの概要

DBUniの概要は前述の通りですが、文字だけでは分かりにくいと思いますので、図を利用してテストの流れを説明させていただきます。

検索系の処理のテストの流れ

前提値データを用意し、DBUnitを利用してDBに値をセットアップ後、テスト対象のDBアクセスロジックを利用して検索を実施、JUnitのAssertを利用して検索結果を検証する。との流れになります。

検証時の期待値は、前提値データから明白ですので、値をリテラルで記述します。
スクリーンショット 2015-03-27 20.16.32

更新系の処理のテストの流れ

前提値データを用意し、DBUnitを利用してDBに値をセットアップ後、テスト対象のDBアクセスロジックを利用してDBの更新を実施、DBUnitの検証機能を利用して、DBの値と期待値データが一致するかとの検証を行う。との流れになります。

スクリーンショット 2015-03-27 21.13.41

JUnit入門その5[DBUnitの概要説明]は以上です。

JUnit入門その6[Eclipse4.4のJUnitプラグインとDBUnitの併用(便利に利用するためのユーティリティの作成)]に続く


スポンサードリンク



関連記事

JUnit入門その8[Eclipse4.4のJUnitプラグインのテストケースのカバレッジをEclEmmaを利用して測定してみる]

今回は「EclEmma」を使って、テストのカバレッジの測定を行うエントリーとなります。 「djUn

記事を読む

java8(JDK8)の新機能のラムダ式の利用方法をEclipseとJUnitで説明[その2:関数型インターフェースを例としたラムダ式]

「JDK8(Java 8)の新機能のラムダ式の利用方法」では、 指定できる場所の概説と関数型インタ

記事を読む

Mac(OS X)におけるJava8(jdk8)等のインストール、アップデート、アンインストール方法

Windowsとは異なりMac(OS X)ではJDKの管理(インストール、アンインストール)が難しい

記事を読む

Selenium入門その6[Selenium3でWebDriver(Java/Junit4)の環境を作成しEdge,Chrome,Firefoxで確認してみる]

Selenium3も3.0.1がリリースされましたし、今後は本格的にSelenium3が利用されてい

記事を読む

Java超入門 with Eclipse[4:クラスに関する基礎知識(修飾子とクラスとインスタンスと変数)]

前回は、Javaの基本であるクラスの基本的な知識をざっくりと説明させていただいたあと、 packa

記事を読む

JUnit入門その6[Eclipse4.4のJUnitプラグインとDBUnitの併用(便利に利用するためのユーティリティの作成)]

JUnit入門その4 でDBUnitの環境構築を説明させていただきました。 今回は、前提値デ

記事を読む

Eclipse(4.3,4.4)のJava言語のリファクタリング機能の使い方[リファクタリングの説明と「名前変更」と「移動」]

本エントリーでは、Eclipse(4.3,4.4)の「リファクタリング」機能の使い方を説明させていた

記事を読む

Eclipseの「DBViewer」プラグインを利用して「Java DB」の環境を作成し、SQLを発行してみる

EclipseのJUnitプラグインとDBUnitを併用したDB(データベース)のアクセス処理のユニ

記事を読む

Selenium利用時のトラブルシューティング方法[クリック編]

Seleniumは便利なテスト自動化ツールですし、今後は更なる利用者の増加が見込まれます。 とは言

記事を読む

Eclipse4.4(Java)におけるビルド・パス関係の設定方法[ビルド・クラスパスの順序およびエクスポート設定]

Eclipse4.4(Java)におけるビルド関係のビルド・パス上の「ビルド・クラスパスの順序および

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Selenium入門その6[Selenium3でWebDriver(Java/Junit4)の環境を作成しEdge,Chrome,Firefoxで確認してみる]

Selenium3も3.0.1がリリースされましたし、今後は本格的にS

Selenium利用時のトラブルシューティング方法[クリック編]

Seleniumは便利なテスト自動化ツールですし、今後は更なる利用者の

Java8のラムダ式とStream APIを利用してコーディング量の削減サンプル集

Java8になりラムダ式と「Stream API」が利用できるようにな

Selenium入門その5[ページオブジェクトパターン(Page Object Design Pattern)を利用して変更に強いテストを作成する方法]

Selenium入門その2 では「UIマップファイル」と言う仕組みが

Javaによる非同期処理入門その1[非同期処理の実装方法の概説]

Javaによる非同期処理に関するエントリーを前々から作成したいと思って

→もっと見る

Optimization WordPress Plugins & Solutions by W3 EDGE
PAGE TOP ↑