DBUnit 4章 データセット(1)
- 4.1. IDataSet
- 4.2. FlatXmlDataSet
- 4.3. FlatXmlDataSetとDTD
- 4.4. DTDの生成
4.4 DTDの生成
FlatXmlDataSetを使用してデータベーステストを行う場合、XMLにはDTDを必ず指定するべきでしょう。これにより、「テストクラス自身のバグ」を減らすことができます。ただ、DTDを作成するのは結構面倒です。そこで、DbUnitでは、データベースよりDTDを自動作成する仕組みも提供しています。以下がサンプルです。
DtdSample.java
public class DtdSample {
public static void main(String[] args) throws Exception {
// データベースに接続する。
Class.forName("org.postgresql.Driver");
Connection jdbcConnection = DriverManager.getConnection("jdbc:postgresql:Training.dbunit",
"postgres",
"");
IDatabaseConnection connection = new DatabaseConnection(jdbcConnection);
// Dtdファイルを作成する
FlatDtdDataSet.write(connection.createDataSet(),
new FileOutputStream("test.dtd"));
}
}
まず、データベースへの接続をあらわす、DbUnitのIDatabaseConnectionを取得します。次に、org.dbunit.dataset.xml.FlatDtdDataSetのwriteメソッドを使用しDTDを出力します。ここでは、test.dtdというファイルにDTDを取得しています。
例えば、Training.dbunitデータベースはAcceptingOrderテーブル1つだけ持つデータベースだった場合、test.dtdには以下のように出力されます。
test.dtd
<!ELEMENT dataset (
accept_order*)
>
<!ELEMENT accept_order EMPTY>
<!ATTLIST accept_order
o_num CDATA #REQUIRED
c_num CDATA #IMPLIED
p_num CDATA #IMPLIED
dc_rate CDATA #IMPLIED
option_price CDATA #IMPLIED
employee CDATA #IMPLIED
accept_date CDATA #IMPLIED
>
実習課題3
FlatDtdDataSetを使用し、Customerテーブルの構造を表すDTDを作成せよ。

