1.dbunit原理:
Dbunit其原理,是在每个测试方法之前后,通过增删一些固定的记录,保持了数据库的固定状态,由此,我们可以在每个测试方法中自由地增删记录,而不用担心会影响到别的测试方法。DBUnit的设计理念是在测试之前,备份数据库,然后给对象数据库植入我们需要的准备数据,后,在测试完毕后,读入备份数据库,回溯到测试前的状态。
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结合进行与数据库相关的测试,主要实现过程包括创建与数据库操作相关的测试脚本,创建测试用例的测试脚本和创建测试数据。
创建与数据库操作相关的测试脚本过程如下:
(1)用来取得dbunit用的数据库连接。
(2)用来在运行测试脚本前,设置数据库的初始数据。
(3)用来在测试用例运行后,设置数据库的测试后的数据。
(4)用来在断言测试用例执行后,断言测试实际数据和测试预期数据,一般判断测试用例的测试正确性。
/**
*取得DbUnit用的数据库连接数据库连接
*/
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");
}
/**
*测试前设置数据库状态以及装载初始数据
*/
public void dbActionBeforeTest(String fileName) throws Exception {
dataSet = new FlatXmlDataSet(new FileInputStream(this.setFilePath(fileName)));
//清空数据库表,然后装载初始数据到数据库表中
DatabaseOperation.CLEAN_INSERT.execute(this.getConnection(), dataSet);
}
/**
*测试后设置数据库状态
*/
public void dbActionAfterTest() throws Exception {
//删除表中的所有数据
DatabaseOperation.DELETE_ALL.execute(this.getConnection(), dataSet);
}
/**
*断言测试实际数据和测试期望数据
*/