ひがやすを技術ブログ

電通国際情報サービスのプログラマ

S2Unit

次のバージョンではS2Unitが大幅に強化されます。
S2DataSetと連携することによりDBのテストが簡単になります。
検索のテストをするためには、検索用のデータと結果を確かめるための
データをExcelで用意します。Excelのデータは、シートがテーブル名、
最初の行がカラム名、2行目以降はデータで構成されているものです。


class EmployeeDaoImplTest extends S2TestCase {
//テストメソッドの直前にS2Containerから型で自動的に設定される
private EmployeeDao dao_;
//testGetEmployee用のsetUpメソッド
void setUpGetEmployeesTx() {
include("j2ee-config");
}
//テストメソッドの最後にTxをつけるとテストを開始する
//直前に自動的にトランザクションが開始され、
//テストが終わると自動的にトランザクションロールバックするため
//更新したデータをクリーンアップする必要がない
void testGetEmployeesTx() {
//search.xlsの内容が読み込まれてDBに格納される
//DBへ接続するための情報は、j2ee-config.xmlから
//自動的に取得する
readXlsWriteDb("search.xls");
List result = dao_.getEmployees();
//JavaBeansのリストで返ってきた結果をDataTableに変換する
DataTable table = new DataTableImpl("emp);
table.setupColumns(Employee.class);
table.copyFrom(result);
//結果用のExcelデータを読み込む
DataSet ds = readXls("result.xls");
//結果が等しいかどうか検証する
assertEquals(ds.getTable("emp"), table);
}
更新のテストはこんな感じ。

void setUpUpdateEmployeeTx() {
include("j2ee-config");
}
void testUpdateEmployeeTx() {
//更新するためのデータを用意
readXlsWriteDb("prepare.xls");
Employee emp = new Employee();
emp.setXxx(...);
dao_.updateEmployee(emp);
//更新した結果を検索する
DataTable table = readDbByTable("emp", "empno = 7788");
//結果用のExcelデータを読み込む
DataSet ds = readXls("result2.xls");
//結果が等しいかどうか検証する
assertEquals(ds.getTable("emp"), table);
}
データを読み込むためのメソッドはreadDbBySql("SELECT ... ", テーブル名)
もあります。