浏览 3937 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-01-24
大概流程: 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() { ……………… } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |