ソースは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つの値があります。
- NONE
- UPDATE
- INSERT
- REFRESH
- DELETE
- DELETE_ALL
- TRUNCATE_TABLE
- CLEAN_INSERT
意味はDbUnitそのままです。
これでテストメソッド実行前にテストデータを投入します。
まだtearDownは実装してないですけど、同じようになります。
よかったら試してみてください!