cerulean

          DBUnit的使用

          DBUnit擴展自JUnit.在使用DBUnit之前,為了驗證自己編寫的涉及數據庫操作方法的正確性,每次都要執行一個簡單的sql腳本,灌些數據,然后人眼觀察著數據表中的數據.然后,代碼執行完畢后,再次觀察數據變化情況.久而久之,表里面的數據就變得雜亂,一般會全部刪除,重新來過.
          ??? DBUnit的目標正是保證數據庫數據環境的穩定性,具備將數據庫中數據與xml文件之間雙向轉換的能力.
          試驗了一下,

          首先,下載dbunit的jar包,加入工程即可.
          1.從xml中將數據導入數據庫表
          tc不再繼承自TestCase,而是繼承DatabaseTestCase
          覆蓋幾個方法,包括獲得xml文件內容,獲得DB連接,以及在setup方法和teardown方法中調用提供的dbunit操作類型,構建數據庫內數據環境.

          這時,我以為如果只有幾個簡單的數據,寫xml固然簡單,但想測試大數據量時(雖然UT主要是測試功能而非性能,但是大數據量也方便驗證)就有點問題,好在是雙向的,可以先把數據用function灌入數據庫,再導進xml里面:

          2.從數據庫表數據導入xml文件
          ??? 用ant+DBUnit來完成這個任務非常方便!

          < target? name ="export" >
          ????????
          < taskdef? name ="dbunit" ?classname ="org.dbunit.ant.DbUnitTask" ?classpathref ="compile.path" ? />
          ????????
          < dbunit? driver ="com.mysql.jdbc.Driver" ?url ="jdbc:mysql://127.0.0.1:3306/mydb" ?userid ="root" ?password ="root" ?supportBatchStatement ="true" >
          ????????????
          < export? dest ="${test.srcpath}/export.xml" > ????????????????
          ????????????????
          < query? name ="test_table" ?sql ="SELECT?*?FROM?test_table" ? /> ????????
          ????????????????
          < table? name ="user_table" ? />
          ????????????
          </ export >
          ????????
          </ dbunit >
          ????
          </ target >


          ??? 疑問,看到有人說DBUnit在清除數據時,有時不能徹底,原因是分析不出來外鍵等表之間的約束.因為在試驗中采用的數據庫里沒啥表之間的約束,所以還沒有體會到.

          ??? DatabaseTestCase類提供了兩個方法來控制測試前和測試后的數據庫狀態:getSetUpOperation() 和 getTearDownOperation().???????
          ??? 一種高效的實施方案就是讓getSetUpOperation()方法執行REFRESH操作,通過這個操作,我們可以用種子文件中的數據去更新目標數據庫里的數據。
          ??? 接下來,就是getTearDownOperation(),讓他去執行一個NONE操作,也就是什么也不執行
          ??? 常用操作:
          ??? DatabaseOperation.CLEAN_INSERT;?先刪除表中所有,再插入準備的數據
          ??? DatabaseOperation.REFRESH;?使用準備數據更新表,存在則update,不存在則insert
          ??? DatabaseOperation.DELETE;??只刪除準備的數據
          ??? DatabaseOperation.NONE;??啥都不做

          posted on 2007-03-20 20:59 cerulean 閱讀(1812) 評論(0)  編輯  收藏 所屬分類: JavaTesting Related

          導航

          <2007年3月>
          25262728123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          統計

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 察雅县| 荔浦县| 淅川县| 中阳县| 济宁市| 介休市| 晴隆县| 凌海市| 弥渡县| 靖远县| 海门市| 新昌县| 无棣县| 称多县| 宁蒗| 平乡县| 郸城县| 大埔县| 张家界市| 梓潼县| 松阳县| 胶南市| 政和县| 鲜城| 松潘县| 龙海市| 曲周县| 合江县| 调兵山市| 九寨沟县| 龙游县| 灵山县| 平利县| 松阳县| 佛山市| 都兰县| 曲阳县| 鄂托克前旗| 湟源县| 通渭县| 民乐县|