随笔 - 9, 文章 - 0, 评论 - 3, 引用 - 0
数据加载中……

Open Session in Test 及自动Rollback

from: http://www.blogjava.net/rain1102/articles/117541.html

又是来自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-10-29 16:00 空杯 阅读(277) 评论(0)  编辑  收藏 所属分类: Testing


只有注册用户登录后才能发表评论。


网站导航: