ITPub博客

首页 > 数据库 > 数据库开发技术 > spring-mock + dbutil 用来测试数据库操作

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

原创 数据库开发技术 作者:biqing0427 时间:2008-01-02 18:27:57 0 删除 编辑
需要的jar 1.spring-mock.jar 2.dbunit-2.2.jar 3.junit.jar[@more@]

大概流程:
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() {
………………
}
}

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9879276/viewspace-996348/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 小结java与数据库
下一篇: spring 入门简介
请登录后发表评论 登录
全部评论
  • 博文量
    24
  • 访问量
    15393