笔者在本空间中《DBUnit的原理》提到DBUnit的原理,其第一步的任務是把數據庫裏的數據以XML的格式導出來;本來XML就是可以當數據庫使用的,相當於,將數據庫中設計好的測試數據先導出至XML數據庫暫存起來,以備在單元測試用例運行前將數據庫恢復至設計好的測試數據狀態。
本篇志在講述將設計好的測試數據導出的兩種方式。
一 腳本式導出
將下面這段代碼置於ANT腳本的某一任務腳本中:
<dbunitdriver="com.vendor.jdbc.Driver"url="jdbc:vendor:mydatabase"userid="user"password="password">
<exportdest="export.xml"/>
</dbunit>
執行該項任務後就會將數據庫的當前全部數據導出至export.xml文件中。
二 編程式導出
此項方式是通過編碼的方式將當前數據庫的數據導出至XML文件。本文將以Postgresql數據庫舉例。
1. 獲取當前數據庫連接
既然是要將當前數據庫的數據庫導出,第一步當然是獲取當前數據庫的Connection对象:
Connectionconn=DriverManager.getConnection(“jdbc:postgresql://localhost:5432/databasename”,“username”,“pwd”);
2.获取DataBaseConnection对象
//该对象是DBUnit对Connection对象的封装。
3.配置DBUnit的DatabaseConfig
DatabaseConfigconfig=connection.getConfig();config.setProperty(config.PROPERTY_DATATYPE_FACTORY,newPostgresqlDataTypeFactory()); 4. 獲取數據集對象 QueryDataSet queryDS = new QueryDataSet(connection); 5. 將數據表添加至數據集對象 queryDS.addTable(tableName1); queryDS.addTable(tableName2); ... 6. 生成XML數據文件 FlatXmlDataSet.write(queryDS,new FileOutputStream(scriptName)); ------------------------------------ 兩種方式的比較: 第一種方式: 優點:比較簡便,一次即可導出庫中所有的數據。 缺點:不靈活,不能針對單個表或某些表導出數據 第二種方式: 優點:比較靈活,可以針對某個表、某些表或全部數據表導出其對應的XML文件。在大部分單元測試中,某一個測試類只針對一兩個表進行測試,這個時候如果執行每一個單元測試用例前就將數據的全部的表恢復至已知狀態,顯而易見,我們做了無用功。 缺點:不如腳本式導出簡便,要寫一個帶主函數的類針對某些表分別導出測試數據。
原文链接:https://www.f2er.com/postgresql/196688.html