隨筆 - 9, 文章 - 0, 評論 - 3, 引用 - 0

          導航

          <2007年10月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          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


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


          網站導航:
           
          主站蜘蛛池模板: 奇台县| 临武县| 江安县| 娱乐| 平度市| 阿尔山市| 益阳市| 东方市| 东乌珠穆沁旗| 梅州市| 泸水县| 宜良县| 富平县| 海晏县| 石柱| 涡阳县| 吉水县| 永吉县| 乌海市| 麦盖提县| 高邑县| 曲松县| 兴文县| 长子县| 萨迦县| 长岭县| 岳普湖县| 和平县| 夏津县| 巨鹿县| 崇义县| 无极县| 高唐县| 云阳县| 乌拉特前旗| 楚雄市| 哈巴河县| 元氏县| 舒兰市| 紫金县| 微山县|