Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

DbUnitアノテーション対応の使い方

ソースはhttp://sourceforge.jp/projects/dbunitng/からダウンロードしてもらうとして。
TestNGのテストスイートファイルであるtestng.xmlにデータベース接続情報を記述します。

<parameter name="driver" value="com.mysql.jdbc.Driver"></parameter>
<parameter name="url" value="jdbc:mysql://127.0.0.1/データベース名"></parameter>
<parameter name="username" value="ユーザー名"></parameter>
<parameter name="password" value="パスワード"></parameter>

依存ライブラリは以下。

  • TestNG
  • DbUnit
  • Commons Lang
  • SLF4J(DbUnitが依存。slf4j-api.jarとslf4j-nop.jarが必要。)
  • Commons Collections(DbUnitが依存)
  • Apache POI(DbUnitが依存。テストデータをExcelに記述する場合必要。)
  • Commons DBCP(利用する場合必要)
  • Commons Pool(DBCPを利用する場合必要)


データベースに接続する際のConnectionは、特に指定がなければDriverManagerで生成します。
もしテストメソッド間でDataSourceを利用したい場合、testng-xmlに「DBCP」と指定します。

<parameter name="datasource" value="DBCP"></parameter>

この場合、もちろんDBCPとPoolのJARが必要です。


テストメソッド(@Testを付与したメソッド)に対して、初期データの投入を@SetUpOperationで指定します。
@SetUpOperationに属性を指定します。

  • value(データベース操作方法の指定。要はDbUnitのDatabaseOperationの定数。デフォルトはNONE。)
  • pathname(テストデータを記述したファイルパス。クラスパスでの位置。)

valueにはEnumであるDatabaseOperationTypeを指定します。


こんな感じで指定します。

@SetUpOperation(value = DatabaseOperationType.CLEAN_INSERT, pathname = "org/dbunitng/dept-emp.xml")

DbUnitと同様で、XML形式とExcel形式に対応してます。
DatabaseOperationTypeは8つの値があります。

  1. NONE
  2. UPDATE
  3. INSERT
  4. REFRESH
  5. DELETE
  6. DELETE_ALL
  7. TRUNCATE_TABLE
  8. CLEAN_INSERT

意味はDbUnitそのままです。


これでテストメソッド実行前にテストデータを投入します。
まだtearDownは実装してないですけど、同じようになります。


よかったら試してみてください!