又是來自Spring這個神奇國度的東西, 你可以讓testCase繼承于AbstractTransactionalDataSourceSpringContextTests,就可以做到Open Session in Test ,解決Hibernate的lazy-load問題;而且接管原來的DAO里的事務控制定義,通過setDefaultRollback(boolean)方法控制最后回滾還是提交,如果默認為回滾,則測試產生數據變動不會影響數據庫內數據。
如果不能繼承于這個基類,可以自己簡單編寫,代碼是這樣的:
protected PlatformTransactionManager transactionManager;
protected TransactionStatus transactionStatus;
protected boolean defaultRollback = true;
public void setUp()
{
transactionManager = (PlatformTransactionManager) ctx.getBean("transactionManager");
transactionStatus = transactionManager.getTransaction(new DefaultTransactionDefinition());
}
public void tearDown()
{
if (defaultRollback)
transactionManager.rollback(this.transactionStatus);
else
transactionManager.commit(this.transactionStatus);
}
(注,hibernate太奸詐了,如果全部默認回滾,只會在session里干活,一點不寫數據庫,達不到完全的測試效果。)
posted on 2007-05-15 11:09
周銳 閱讀(408)
評論(0) 編輯 收藏 所屬分類:
Hibernate 、
Spring