亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > DBunit
Spring+iBatis+DBUnit 進行單元測試
作者:網絡轉載 發布時間:[ 2013/12/24 13:43:59 ] 推薦標簽:單元測試 開源 測試

如果希望業務類也支持事務處理可以加入以下配置,否則可以略過:

<bean id="accountManagerTarget" class="com.wang.dbunit.AccountManager">
   <property name="sqlMapClient" ref="sqlMapClient"/>
</bean>
<bean id="accountManager" class="org.springframework.aop.framework.ProxyFactoryBean">
   <property name="proxyInterfaces">
      <value>
          com.wang.dbunit.IAccountManager
      </value>
   </property>
   <property name="interceptorNames">
      <list>
          <idref local="transactionInterceptor" />
          <idref local="accountManagerTarget" />
      </list>
   </property>
</bean>

以上配置只作用于使業務類,因為我們的測試用例類“HelloDBUnit.java”沒有出現在配置文件中,更沒有設置任何攔截器,所以測試用例對數據庫的所有操作(插入、清除測試數據)目前都不在攔截范圍。我們必須在測試用例中手工為它加入事務處理,才可以達到我們的目的。

添加事務管理代碼
添加以下屬性和方法:

private TransactionStatus ts = null;
private DataSourceTransactionManager transactionManager = null;
......
protected void setUpTransaction()
{
   transactionManager
      =(DataSourceTransactionManager)context.getBean(
         "transactionManager");
   TransactionDefinition td = new DefaultTransactionDefinition();
   ts = transactionManager.getTransaction(td);
}
protected void tearDownTransaction(boolean commit)
{
   if(commit)
   {
      transactionManager.commit(ts);
   }
   else
   {
      transactionManager.rollback(ts);
   }
}

修改setUp和tearDown方法:

protected void setUp() throws Exception
{
   setUpTransaction();
   DataSourced ataSource = getDataSource();
   // 替換 Connection connection = dataSource.getConnection();
   Connection connection = DataSourceUtils.getConnection(dataSource);
   IDatabaseConnection dbUnitCon
      = new DatabaseConnection(connection, "SYSTEM");
   if(getDataSet()!= null)
   {
      try
      {
         getSetUpOperation().execute(dbUnitCon, getDataSet());
      }
      finally
      {
         if(connection!= null)
         {
            // 替換 connection.close();
            DataSourceUtils.releaseConnection(
               connection, dataSource);
          }
      }
   }
}
protected void tearDown() throws Exception
{
   DataSource dataSource = getDataSource();
   // 替換 Connection connection = dataSource.getConnection();
   Connection connection = DataSourceUtils.getConnection(dataSource);
   IDatabaseConnection dbUnitCon
      = new DatabaseConnection(connection, "SYSTEM");
   if(getDataSet() != null)
   {
      try
      {
          // 如果不希望回滾數據,傳入 true 參數。
          tearDownTransaction(false);
          getTearDownOperation().execute(dbUnitCon, getDataSet());
      }
      finally
      {
         if(connection!= null)
         {
            // 替換 connection.close();
            DataSourceUtils.releaseConnection(
               connection, dataSource);
          }
      }
   }
}

后修改getTearDownOperation,用 DELETE 替換 DELETE_ALL:

protected DatabaseOperation getTearDownOperation() throws Exception
{
    return DatabaseOperation.DELETE;
}

現在在表中隨便添加一些記錄,然后執行我們的測試用例,執行完后,手工添加的數據沒有受到任何影響。


后一點提示
因為每一個 testXxx 方法時都會初始化一個測試用例,所以每執行一次 testXxxx 方法都會導致 setUp 和 tearDown 方法被調用一次,而本例的事務定義也都由 setUp 開始, tearDown 結束,也意味著不同測試方法(同一測試用例)之間處于不同的事務范圍,導致數據操作結果無法共享(如果每次 tearDown 都回滾數據)。比如在 testInsert 方法中插入數據,在 testSelect 無法獲得。要解決這個問題,要適當的修改對 setUpTransaction 和 dearDownTransaction 的調用,使得事務可以在全局范圍內被多個 test 方法共享。
E:workpm2_v1_00 est.xml:171: org.dbunit.dataset.NoSuchTableException: VERSION_INFO
DBunit 要求schema 大寫google_protectAndRun("render_ads.js::google_render_ad", google_handleError, google_render_ad);

上一頁12345678下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 天天爱天天干天天操 | 久久精品国产半推半就 | 日本高清va不卡视频在线观看 | 亚洲小视频在线观看 | 夜夜天天操| a毛片在线看片免费 | 欧美国产精品不卡在线观看 | 日韩在线一区二区三区 | 日韩午夜小视频 | 涩涩色视频在线播放 | 久久天天躁狠狠躁夜夜爽 | 国产偷国产偷高清视频 | 欧美精品成人a多人在线观看 | 亚洲综合一区国产精品 | 全免费毛片在线播放 | 免费看黄色片视频 | 91视频第一页 | 天天槽夜夜槽槽不停 | 97免费在线| 欧美13一18成年性 | 国产福利影院在线观看 | 高清欧美一级在线观看 | 欧美va天堂| 欧美国产亚洲精品a第一页 欧美国产在线观看 | 一级特黄色片 | 很黄很黄很刺激的视频免费 | 91成人在线 | 成人国产精品一级毛片视频 | 免费视频 久久久 | aaa成人永久在线观看视频 | 岛国二区三区 | 免费观看日批视频 | 又黄又变态又免费的视频 | 国产精品特黄毛片 | 国产色婷婷精品综合在线 | 黄色大片网站在线观看 | 男女午夜 | 91成人在线 | 亚洲国产欧美日韩第一香蕉 | 免费国产综合视频在线看 | 亚洲免费小视频 |