2010年3月25日木曜日

DBUnitのつまづきポイント

DBUnitを使ってみた。最初は、日本語のページを参照したのだけど、
最新のバージョンでは、なんか古くなりつつある感じだったので、
下記のページを元にやってみた。

http://www.dbunit.org/howto.html

最初のつまずきは、ClassNotFoundが発生した。

それは、とりあえず、下記のページの通り、

http://d.hatena.ne.jp/jyukutyo/20080801/1217579580

必要なライブラリを入れることにより解決。
SLF4J(DbUnitが依存。slf4j-api.jarとslf4j-nop.jarが必要。)


http://www.slf4j.org/

次は、


AmbiguousTableNameException

が出てしまい、エラーになって動かない。

いろいろ試してみたら、どうやら、サンプルではコメントアウトされている
スキーマの指定をきちんとしてみたらこの例外は出なくなった。
================================
System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_SCHEMA, "XXXX" );
================================


どうやら、別のスキーマに同名のテーブルがあるとうまくいかないらしい。

次にぶち当たった問題は、

data type not recognize

というメッセージが出る。メッセージどおりFAQを見ると、データベースが
Oracleの場合には、それなりの記述が必要なようだ。

http://www.dbunit.org/faq.html#typenotrecognized

の記述があるので、下記の通り直してみる。

http://www.dbunit.org/faq.html#typefactory

ちょうどそれをオーバーロードする関数があったので、
ここに記述するとようやく無事に動くようになった。


==========================================================
 protected void setUpDatabaseConfig(DatabaseConfig config) {
        config.setProperty(DatabaseConfig.PROPERTY_BATCH_SIZE, new Integer(97));
        config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new OracleDataTypeFactory());
 }
==========================================================

で、動かしてみた感想は、素晴らしいフレームワークだなということです。

0 件のコメント: