1.dbunit原理:
Dbunit其原理,是在每個(gè)測(cè)試方法之前后,通過增刪一些固定的記錄,保持了數(shù)據(jù)庫(kù)的固定狀態(tài),由此,我們可以在每個(gè)測(cè)試方法中自由地增刪記錄,而不用擔(dān)心會(huì)影響到別的測(cè)試方法。DBUnit的設(shè)計(jì)理念是在測(cè)試之前,備份數(shù)據(jù)庫(kù),然后給對(duì)象數(shù)據(jù)庫(kù)植入我們需要的準(zhǔn)備數(shù)據(jù),后,在測(cè)試完畢后,讀入備份數(shù)據(jù)庫(kù),回溯到測(cè)試前的狀態(tài)。
2. POM文件中加入如下一段配置:
<dependency>
<groupId>org.dbunit</groupId>
<artifactId>dbunit</artifactId>
<version>2.4.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.4.3</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.3.0</version>
</dependency>
3.selenium與dbunit結(jié)合進(jìn)行與數(shù)據(jù)庫(kù)相關(guān)的測(cè)試,主要實(shí)現(xiàn)過程包括創(chuàng)建與數(shù)據(jù)庫(kù)操作相關(guān)的測(cè)試腳本,創(chuàng)建測(cè)試用例的測(cè)試腳本和創(chuàng)建測(cè)試數(shù)據(jù)。
創(chuàng)建與數(shù)據(jù)庫(kù)操作相關(guān)的測(cè)試腳本過程如下:
(1)用來取得dbunit用的數(shù)據(jù)庫(kù)連接。
(2)用來在運(yùn)行測(cè)試腳本前,設(shè)置數(shù)據(jù)庫(kù)的初始數(shù)據(jù)。
(3)用來在測(cè)試用例運(yùn)行后,設(shè)置數(shù)據(jù)庫(kù)的測(cè)試后的數(shù)據(jù)。
(4)用來在斷言測(cè)試用例執(zhí)行后,斷言測(cè)試實(shí)際數(shù)據(jù)和測(cè)試預(yù)期數(shù)據(jù),一般判斷測(cè)試用例的測(cè)試正確性。
/**
*取得DbUnit用的數(shù)據(jù)庫(kù)連接數(shù)據(jù)庫(kù)連接
*/
public IDatabaseConnection getConnection() throws Exception {
Class driverClass = Class.forName("oracle.jdbc.driver.OracleDriver");
Connection jdbcConnection = DriverManager.getConnection("jdbcracle:thin192.168.71.52:1521:JRESSTUDIO",
"jrestester", "jrestester");
return new DatabaseConnection(jdbcConnection,"JRESTESTER");
}
/**
*測(cè)試前設(shè)置數(shù)據(jù)庫(kù)狀態(tài)以及裝載初始數(shù)據(jù)
*/
public void dbActionBeforeTest(String fileName) throws Exception {
dataSet = new FlatXmlDataSet(new FileInputStream(this.setFilePath(fileName)));
//清空數(shù)據(jù)庫(kù)表,然后裝載初始數(shù)據(jù)到數(shù)據(jù)庫(kù)表中
DatabaseOperation.CLEAN_INSERT.execute(this.getConnection(), dataSet);
}
/**
*測(cè)試后設(shè)置數(shù)據(jù)庫(kù)狀態(tài)
*/
public void dbActionAfterTest() throws Exception {
//刪除表中的所有數(shù)據(jù)
DatabaseOperation.DELETE_ALL.execute(this.getConnection(), dataSet);
}
/**
*斷言測(cè)試實(shí)際數(shù)據(jù)和測(cè)試期望數(shù)據(jù)
*/