DBUnitのメモ

DatabaseOperationの一覧

INSERT

指定したデータセットをテーブルに挿入する。
テーブル内で同じ主キーとなるデータがすでに存在する場合、主キー制約でエラーとなる。

UPDATE

指定したデータセットの同じ主キーとなるデータを上書きする。
上書きするデータが存在しない場合、特に登録は行われない。

DELETE

指定したデータセットとマッチするものだけを削除する。
データセットに含まれていないデータは、削除されない。

DELETE_ALL

指定したデータセットに存在するテーブルのレコードすべてを削除する。
テーブル自体は削除されない。
データセットの逆順にデータが削除される。

CLEAN_INSERT

指定したデータセットに存在するテーブルに対して、DELETE_ALLを行った後、INSERTを行なう。
データセットに含まれるデータのみでテストしたい場合に使用する。
既存のデータはすべて削除される。

REFRESH

指定したデータセットの主キーにマッチするデータを更新する。
更新するデータがない場合は、挿入される。

TRANCATE_TABLE

指定したデータセットに含まれるテーブルが削除される。

NONE

何も行わない処理。 何に使うのだろう・・・

特殊な値を使ったテスト

データセットへ置き換え文字を埋め込んでおく

<?xml version='1.0' encoding='UTF-8'?>
<dataset>
  <sample title="Hello" price="100" date="[SYSDATE]"/>
  <sample title="[NULL]" price="200" date="2005-10-10"/>
</dataset>


置き換える

ReplacementDataSet dataSet = 
    new ReplacementDataSet(new FlatXmlDataSet(new FileInputStream("dataset.xml")));
dataSet.addReplacementObject("[SYSDATE]", new Timestamp(System.currentTimeMillis()));
dataSet.addReplacementObject("[NULL]", null);

Excel 使用時の注意点

Excelの書式設定により、XlsDataSetでの値の取り扱われ方が異なる。
数値はBigDecimal型、日付はDate型、文字列はString型として扱われる。