一个通用的单元测试框架的思考和设计04-实现篇-测试数据自动插入删除

发表于:2011-8-05 10:50

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:CrazyCoder2010    来源:51Testing软件测试网采编

  上篇文章罗列了整个框架的核心接口,这篇文章将提供IunitExecutionListener的一个实现类-DatasetProviderListener,主要用来将测试数据插入到数据库中,待测试完成后自动删除数据

  1. dbunit为核心的db测试

  dbunit是个很好的数据库测试框架,提供了多种准备数据的操作策略来简化测试数据的插入或更新操作,参考http://www.dbunit.org/components.html#deleteall

操作 

描述 

DatabaseOperation.UPDATE 

使用准备数据更新现有db中的数据(根据准备数据主键ID值),如果数据库中不存在准备数据中的ID,报错退出 

DatabaseOperation.INSERT 

将测试数据插入到数据库中,如果数据库中已经有对应id的数据,则报错退出 

DatabaseOperation.DELETE 

删除数据库中id在准备数据中的记录 

DatabaseOperation.DELETE_ALL 

删除准备数据中相关的数据库表中的所有数据 

DatabaseOperation.TRUNCATE 

删除准备数据中相关的数据库表中的所有数据 

DatabaseOperation.REFRESH 

先根据准备数据中的id查询数据库,如果有对应的记录则更新,若无则插入新记录 

DatabaseOperation.CLEAN_INSERT 

先做一个DELETE_ALL,然后做一个INSERT操作 

DatabaseOperation.NONE 

什么也不做处理 

  我们使用dbunit默认的xml格式来准备数据,在测试运行前使用REFRESH操作来插入数据,测试执行完毕后使用DELETE策略将测试数据删除即可

  2. @IUnitDataSet注解

  我们的dbunit只对那些需要用到数据库测试的类才加载,这里用这个注解来标识(后期我们可以对这个注解进行扩展,如添加filename和format字段,前者表示测试文件名,后者表示文件格式,比如我们后期可能提供以excel格式来准备测试数据)

  3. 约定

  这里框架默认要求测试类和测试类的准备数据放在同一级目录下,如类的路径为com.crazycoder2010.iunit.AppTest.java则其测试数据文件为com/crazycoder2010/iunit/AppTest.xml框架会自动去加载,同时因为需要链接数据库,因此需要配置数据库的jdbc,username,password等,这里要求程序提供一个iunit.properties文件放置在classpath下

  ##configurationfordbunit
  dbunit.connectionUrl=jdbc:hsqldb:hsql://localhost/
  dbunit.driverClass=org.hsqldb.jdbcDriver
  dbunitdbunit.password=
  dbunit.username=sa
  dbunit.schema=

  4. DatasetProviderListener类的源码

  packagecom.crazycoder2010.iunit;
  importjava.io.IOException;
  importjava.util.Properties;
  importorg.dbunit.IDatabaseTester;
  importorg.dbunit.JdbcDatabaseTester;
  importorg.dbunit.PropertiesBasedJdbcDatabaseTester;
  importorg.dbunit.dataset.IDataSet;
  importorg.dbunit.dataset.xml.FlatXmlDataSetBuilder;
  importorg.dbunit.operation.DatabaseOperation;
  importcom.crazycoder2010.iunit.annotation.IUnitDataSet;

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号