DbUnitでexcelファイルを読み込み、DBへ登録する初期値やテスト結果の期待値を取得します。それにはorg.dbunit.dataset.excel.XlsDataSetを使います。このXlsDataSetはコンストラクタでjava.io.Fileかjava.io,InputStreamを渡します。では、DbUnitを拡張して独自にテストフレームワークを作成するとして、excelファイルはどう読み込みます??僕はクラスローダを取ってきてClassLoader#getResourceAsStream()を呼び出し、InputStreamを取得しました。クラスローダーは
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
で取得。
それから
InputStream inputStream = classLoader.getResourceAsStream("excelファイルのフルパス");
します。
次に、excelファイルの置き場所ってどうします??僕はテストケースクラスと同じパッケージに置きました。excelのファイル名をテストメソッド名と同じにしました。eclipseでJUnitを実行すると、TestCase#getName()でテストメソッド名が取得できるので。あとはパッケージとテストメソッド名(=ファイル名)をつなげて「.」を「/」に変換し、拡張子「.xls」をつけて上記getResourceAsStream()に引数として渡します。これでexcelファイルをInputStreamにできます。
これで、XlsDataSetインスタンスを生成できるのですが、XlsDataSetは内部的にXlsTableを持ってます。イメージとしてはXlsDataSetがexcelのブック、XlsTableがexcelのシートと思ってください。
それで、ちょっと困ったこと。このXlsTableクラスがpublicじゃないんですよね。