DbUnitNG プロジェクト日本語トップページ - SourceForge.JPで、データベースへの接続情報をアノテーションでも設定できるようにしました。
と同時に、スキーマも記述できるようにしました。
さらに、JDBCのURLから判断して、DbUnitのIDataTypeFactoryを自動的に設定するようにしました(後述)。
ライブラリDbUnitNGでは接続情報を設定する方法が2つあります。
XMLだとこんな感じです。
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="DbUnitNG"> <parameter name="driver" value="com.mysql.jdbc.Driver"></parameter> <parameter name="url" value="jdbc:mysql://127.0.0.1/testframework"></parameter> <parameter name="username" value="root"></parameter> <parameter name="password" value="root"></parameter> <parameter name="schema" value="testframework"></parameter> <listeners> <listener class-name="org.dbunitng.listeners.DbUnitNGTestListener"></listener> </listeners> <test verbose="2" name="sample" annotations="JDK"> <classes> <class name="org.dbunitng.sample.PerformanceTest"> </class> </classes> </test> </suite>
同じ設定をアノテーションでするとこうなります。
@BeforeSuite @DbUnitNG(driver = "com.mysql.jdbc.Driver", password = "root", url = "jdbc:mysql://127.0.0.1/testframework", username = "root", schema = "testframework") public void beforeSuite() {}
接続情報を記述するアノテーションは@DbUnitNGです。
XMLの記述内容と同じですが、必ず@BeforeSuiteと併用しないといけません。
@BeforeSuite + @DbUnitNGで読み取れます。
もし、XMLとアノテーション両方とも使った場合、アノテーションを優先します。
IDataTypeFactory
DbUnitのIDataTypeFactoryは各データベース独自のデータ型をサポートするためのものです。
たとえば、Oracleを使っている場合、OracleDataTypeFactoryオブジェクトをDbUnitのDatabaseConfigオブジェクトにセットします。
config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY,factory);
ライブラリDbUnitNGではこの設定を自動的にやります。
JDBCのURLに含まれるデータベース名から判断してます。
jdbc:sqlserver://hostname:9999 | MsSqlDataTypeFactory |
jdbc:oracle:thin:@hostname:1521:orcl | OracleDataTypeFactory |
jdbc:db2://host:9999/database | Db2DataTypeFactory |
jdbc:mysql://127.0.0.1/testframework | MySqlDataTypeFactory |
jdbc:hsqldb:hsql://127.0.0.1:9001 | HsqldbDataTypeFactory |
jdbc:h2:tcp://localhost:9092/MyDB | H2DataTypeFactory |
これら以外のデータベースならデフォルトのファクトリを使います。