dbunitng (0.6) | 2008-10-02 16:31 |
データベースへの接続情報をアノテーションでも設定できるようにしました。
と同時に、スキーマも記述できるようにしました。
さらに、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>
同じ設定をアノテーションでするとこうなります。
接続情報を記述するアノテーションは@DbUnitNGです。
XMLの記述内容と同じですが、必ず@BeforeSuiteと併用しないといけません。
@BeforeSuite + @DbUnitNGで読み取れます。
もし、XMLとアノテーション両方とも使った場合、アノテーションを優先します。
DbUnitの!IDataTypeFactoryは各データベース独自のデータ型をサポートするためのものです。
たとえば、Oracleを使っている場合、OracleDataTypeFactoryオブジェクトをDbUnitのDatabaseConfigオブジェクトにセットします。
ライブラリ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 |
これら以外のデータベースならデフォルトのファクトリを使います。