DbUnitを利用してDAOの単体テストのためのベースクラスを作成。
- DbUnitのDatabaseTestCaseを継承
- getDataSet()メソッドではテストケースの実装クラスと同じディレクトリにあるテストメソッド名と同名のエクセルファイルを読み込む。TestCase#getName()でテストメソッド名が取得できる。
- getSetUpOperation()メソッドはデフォルトではDatabaseOperation.CLEAN_INSERTとした。InsertのテストがDatabaseOperation.REFRESHだと回帰テストできないから。
- getTearDownOperation()はDatabaseOperation.NONEにした。setUpで全データを削除するし、DBのデータをテスト完了後も見られるから。
- アサーション用にエクセルファイルを読み込んでDTOのリストを作るメソッドを作成。引数にClassを渡してインスタンスを作り、BeanUtilsを使ってエクセルファイルから変換したITableの値をセット。
- 更新系のために、エクセルファイルとDBのテーブルを比較するメソッドを作成。テーブルの全データをエクセルファイルに記入しておく。setUpがCLEAN_INSERTだから、全データで大丈夫と考えた。
// データベースからテーブルのデータを取得する IDataSet actual = getConnection().createDataSet("テーブル名の配列"); // テーブル名でソートする expected = new SortedDataSet(expected);