旧ブログ

sambaiz.net に引っ越しました

(Java) データベースを扱うプログラムのテストにDBUnitを使ってみた

以下のページを参考にした。

http://www.techscore.com/tech/Java/Others/DBUnit/index/

 

今回作ったのは、入力をチェックして、条件を満たすようならINSERTするプログラムのテストである。

基本的な流れは、

 

テーブルのバックアップ→

テストデータを入れるテーブルを初期化後、テストデータ(ここではxml1.xmlとする)を投入→

実行→

期待されるデータ(ここではxml2.xmlとする)と比較→

テーブルのバックアップから戻す

 

である。テストデータをいれるためにテーブルを初期化しなくてはならない。したがって、バックアップを失敗するとデータを失うことに注意である。実際、失った。

xmlは、もしテーブルaにデータを入れるプログラムなら、

 

xml1.xml

 

<?xml version="1.0" encoding="EUC-JP"?>

<dataset>

<a />

</dataset>

 

xml2.xml

 

<?xml version="1.0" encoding="EUC-JP"?>

<dataset>

<a xxx="aaa" />

</dataset>

 

のようになる。これらのファイルはEclipseならプロジェクトのルートディレクトリに置く。

 

バックアップは、

QueryDataSetのaddTableの部分でテーブルを指定する。

ここで指定しないテーブルに、テストデータを入れると、データが失われることになる

 

ちなみにバックアップするテーブルのカラム名が数字のみだったりすると、以下のような警告がでる。カラム名を直す以外に方法はあるのだろうか。

org.dbunit.dataset.DataSetException: Line 6: Element type "テーブル名" must be followed by either attribute specifications, ">" or "/>".