隨筆 - 9, 文章 - 0, 評論 - 3, 引用 - 0
          數據加載中……

          Open Session in Test 及自動Rollback

          from: http://www.aygfsteel.com/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 空杯 閱讀(287) 評論(0)  編輯  收藏 所屬分類: Testing


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 武鸣县| 霍州市| 贞丰县| 钦州市| 大连市| 锦屏县| 五华县| 安国市| 信阳市| 贵定县| 芒康县| 堆龙德庆县| 昭通市| 乌审旗| 江源县| 兴城市| 上饶市| 长泰县| 芜湖县| 福州市| 霸州市| 漾濞| 沁水县| 甘孜| 江北区| 常山县| 囊谦县| 忻城县| 黑龙江省| 读书| 白银市| 翁源县| 汉沽区| 山东省| 台江县| 楚雄市| 北辰区| 新乐市| 乌审旗| 绥棱县| 绩溪县|