かとじゅんの技術日誌

技術の話をするところ

S2Unit4でS2DaoのDaoをテストする

S2.4からJUnit4を拡張したテスティングフレームワークであるS2JUnit4が利用できます.S2DaoのDaoをテストするにはどうしたらよいか調べてみました.

とりえあずここの内容は読み込む必要があります.
http://s2container.seasar.org/ja/S2JUnit4.html

Daoをテストする簡単なテストクラスを作ります.

@RunWith(Seasar2.class)
public class AdminInfoDaoTest {

	private TestContext ctx;

	private UserInfoDao userInfoDao;

	public void testSelectAll() {
		List<UserInfo> result = this.userInfoDao.selectAll();
		assertBeanEquals("1", ctx.getExpected(), result);
	}

}

テストクラスを用意したら,次に事前データとしてXLSファイルを用意します.(ファイルのフォーマットは,上記のURLを参照してください)
testSelectAll用の事前データであれば,AdminInfoDaoTest_testSelectAll.xlsになります.特にテストメソッドごとに作成しないならAdminInfoDaoTest.xlsになります.
さらに,期待値のXLSファイルも用意します.testSelectAll用ならばAdminInfoDaoTest_testSelectAll_Expected.xlsです.
テストクラス用のdiconファイルも,AdminInfoDaoTest.diconとして以下のように用意します.

	<include path="javaee5.dicon"/>
	<include path="aop.dicon"/>
	<include path="dao.dicon"/>

S2.4のソースに含まれるs2junit4.diconをsrc/test/resourcesなどに配置します.

これで準備は完了です.Eclipseのテストランナーからテストを実行してみてください.
Daoもちゃんとインジェクトされますし,テストメソッドがトランザクション境界になり,テストメソッドが終了する際にテストで加えたDBへの変更はきれいさっぱりロールバックされます.
ちなみに,DDL系のテストではintの戻り値のチェックだけをしました.