5. データセット(2)
DBUnit 5章 データセット(2)
4章に引き続き、5章でもさまざまなデータセットについて説明します。 5.1 ReplacementDataset従業員情報を表すemployeeテーブルがあったとします。e_numテーブルのプライマリキー「e_num」をserial型にします。e_numの値は挿入時にシーケンスが自動採番します。
従業員を表すクラスは以下のよういなります。 EmployeeBean.javapublic class Employee{
private Integer e_num;
private String name;
//setterとgetterがある。
}
EmployeeBeanクラスには、employeeテーブルにデータを挿入するinsertメソッドを追加します。insertメソッドは、e_numカラムに挿入する値をメソッド実行時にその都度シーケンスから取得します。また、insertメソッド実行後には、シーケンスにより割り振られた番号がe_numフィールドに設定されるようにしましょう。 それでは、insertメソッドのテストはどのように作成すればよいでしょうか?テストメソッドでは、「メソッド実行後のテーブルデータ」を表すXMLファイルを作成する必要があります。しかしe_numの値はメソッド実行時に決まるため、テストプログラム作成時にテストデータとしてe_numを指定することができません。 <!-- e_numは5004になるかどうかわからない。そのため、このようなテストデータを用意してもエラーになる--> <employee e_num="5004" name="山田 花子"/> このような場合に、ReplacementDataSetを使用すると便利です。ReplacementDataSetを利用すれば、データセットの特定の値を置換することができます。このケースでは、e_numカラムの値がinsertメソッドを実行するまでわかりません。そのため、変化するかもしれないe_numの値に仮に"[E_NUM]"という文字列を設定しておきます。 employee_after_insert.xml<employee e_num="[E_NUM]" name="山田 花子"/> 次にテストメソッド内で「メソッド実行後のテーブルデータ」を作成します。 EmployeeBeanTest.java...
EmployeeBean employee=new EmployeeBean();
employee.setName("山田 花子");
employee.insert(); //insertメソッドを実行すると、o_numフィールドに設定される。
ReplacementDataSet expectedDataSet
= new ReplacementDataSet(new FlatXmlDataSet(new FileInputStream("employee_after_insert.xml")));
expectedDataSet.addReplacementObject("[E_NUM]",
employee.getE_num());
...
insertメソッド実行後、まず、employee_after_insert.xmlを読み込み、ReplacementDataSetを生成しています。ReplacementDataSetには引数ひとつのコンストラクタが存在します。引数にはIDataSetを指定します。引数に指定したデータセットの特定のデータを置換して、新たなデータセットを作成します。 実習課題1
|
![]()
![]()
|