`
biqing0427
  • 浏览: 55423 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

spring-mock + dbutil 用来测试数据库操作

阅读更多
需要的jar 1.spring-mock.jar 2.dbunit-2.2.jar 3.junit.jar

大概流程:
1.用dbunit创建初始的测试数据。
2.用spring-mock 维护测试过程中的数据会滚,这样可以保证测试后数据库保持原状态。
3.用junit架构测试。
4.用dbunit销毁初始测试数据。

详细过程:
创建测试数据:

dbunit采用配置文件方式,将测试数据放入.xml文件中,形式非常简单:



<表名1
列名1 = 值1
列名2 = 值2
列名3 = 值3
列名4 = 值4
……
……
/>


程序将上面数据加载到数据库
import org.dbunit.IDatabaseTester;
import org.dbunit.JdbcDatabaseTester;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSet;
import org.dbunit.operation.DatabaseOperation;

protected IDataSet getDataSet() throws Exception {
File f = new File(".");
String filePath = f.getAbsolutePath().substring(0,f.getAbsolutePath().length()-1)+"confdbdataSet4mock.xml";
return new FlatXmlDataSet(new FileInputStream(new File(filePath)));
}

初始数据:

databaseTester = new JdbcDatabaseTester("com.mysql.jdbc.Driver",
"jdbc:mysql://127.0.0.1:3306/datetable", "sa", "sa");
IDataSet dataSet = getDataSet();//导入初始数据
databaseTester.setDataSet(dataSet);
databaseTester.onSetup();

销毁数据:
databaseTester.setTearDownOperation(DatabaseOperation.DELETE);
databaseTester.onTearDown();

下面看看spring-mock:
1.封装了junit的testcase:
import org.springframework.test.AbstractTransactionalDataSourceSpringContextTests;
这个类起到的作用:
a.继承testcase
b.读取spring-bean.xml文件中的事务处理,将监听所有事务,然后在测试结束后,进行事务会滚,这样保证在测试过程中产生的数据在结束后不会保存到数据库中。
c.override getConfigLocations()这个函数,将spring读取bean操作进行封装。

public abstract class SpringDAOTestCase extends AbstractTransactionalDataSourceSpringContextTests {
protected String[] getConfigLocations() {
File f = new File(".");
String filePath ="file:" + f.getAbsolutePath().substring(0,f.getAbsolutePath().length()-1)+"confdbspring-context-db.xml";
return new String[] { filePath };
}
}

public class DaoTest4Mock extends SpringDAOTestCase {
protected void onSetUpInTransaction() throws Exception {
super.onSetUpInTransaction();
/*
dbunit 初始化数据
*/
}

protected void onTearDownInTransaction() {
/*
dbunit 释放数据
*/
}

public void testInsert() {
………………
}

public void testUpdate() {
………………
}

public void testDelete() {
………………
}

public void testSelect() {
………………
}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics