TeedaTestCaseを使えばよいのですが,ページクラスではDaoを使うことが多いため,S2TestCaseのtestXXXTxのようにテスト関数を抜けたらDBに対する操作をロールバックするような機能がほしくなります.
がしかし,TeedaTestCaseはS2TestCaseから派生されていませんし,そもそもそのような機能は実装されていないようなので,TeedaTestCase上でTransactionManagerをDIして,以下のような同等な機能を実装します.
public class UserLoginPageTest extends TeedaTestCase { private static final String PATH = "app.dicon"; private TransactionManager transactionManager; private UserLoginPage page; private UserInfoDao userInfoDao; @Override protected void setUp() throws Exception { super.setUp(); this.include(PATH); } @Override protected void setUpAfterBindFields() throws Throwable { super.setUpAfterBindFields(); this.transactionManager.begin(); this.insertUserInfo(); } private void insertUserInfo() { UserInfo userInfo = new UserInfo(); userInfo.setUserId("hogehoge"); userInfo.setEmailAddress("hoge@hoge.com"); this.userInfoDao.insert(userInfo); } @Override protected void tearDownBeforeUnbindFields() throws Throwable { this.transactionManager.rollback(); super.tearDownBeforeUnbindFields(); } public void testInitialize() { String result = this.page.initialize(); assertNull(result); } public void testDoOnceLogin() { this.page.setUserId("hogehoge"); this.page.setPassword("hogehoge"); String result = this.page.doOnceLogin(); assertEquals(result, "hogehoge"); } }
TeedaTestCaseでもTxなテストメソッドかけるようなるといいですが,とりあえずこんな感じの対応になるかと思います.