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

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

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

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

分享:

  /**
  *用来加载测试数据到db中
  *
  *@authorKevin
  *
  */
  publicclassDatasetProviderListenerextendsIUnitTestExecuteListenerAdapter{
  privateIDatabaseTesterdatabaseTester;
  privatebooleanhandleDataSet=true;//标志位,表示当前测试类是否启用了@IUnitDataset标注,如果没用,不做数据库插入删除操作
  privatestaticfinalPropertiesPROPERTIES=newProperties();
  static{
  try{
  PROPERTIES.load(DatasetProviderListener.class
  .getResourceAsStream(“/iunit.properties”));
  }catch(IOExceptione){
  e.printStackTrace();
  }
  }
  privateObjecttestInstance;

  /**
  *将Excel中的测试数据插入到数据库中
  *@throwsException
  *
  *@seecom.crazycoder2010.iunit.IUnitTestExecuteListenerAdapter#prepareTestInstance(com.crazycoder2010.iunit.TestContext)
  */
  @Override
  publicvoidprepareTestInstance(TestContexttestContext)throwsException{

  IUnitDataSetdataset=testContext.getTestInstance().getClass().getAnnotation(IUnitDataSet.class);
  if(dataset==null){
  handleDataSet=false;
  return;
  }
  this.testInstance=testContext.getTestInstance();
  databaseTester=newJdbcDatabaseTester(//创建数据库链接对象
  PROPERTIES
  .getProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS),
  PROPERTIES
  .getProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL),
  PROPERTIES
  .getProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_USERNAME),
  PROPERTIES
  .getProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_PASSWORD));
  }
  @Override
  publicvoidbeforeTest(TestContexttestContext)throwsException{
  if(!handleDataSet){
  return;
  }//测试开始前将数据插入到db
  databaseTester.setDataSet(getDataSet());
  databaseTester.setSetUpOperation(DatabaseOperation.REFRESH);
  databaseTester.onSetup();
  }
  //测试数据文件和测试类之间的‘潜规则’
  protectedIDataSetgetDataSet()throwsException{
  Stringpack=testInstance.getClass().getName();
  StringfilePath=“/”+pack.replaceAll(“[.]”,“/”)+“.xml”;
  returnnewFlatXmlDataSetBuilder().build(this.getClass().getResourceAsStream(filePath));
  }
  /**
  *将文件中准备的测试数据从数据库中清空
  *
  *@throwsException
  *@seecom.crazycoder2010.iunit.IUnitTestExecuteListenerAdapter#afterTest(com.crazycoder2010.iunit.TestContext)
  */
  @Override
  publicvoidafterTest(TestContexttestContext)throwsException{
  if(!handleDataSet){
  return;
  }
  databaseTester.setTearDownOperation(DatabaseOperation.DELETE);
  databaseTester.onTearDown();
  }

相关链接:

一个通用的单元测试框架的思考和设计01-思考篇

一个通用的单元测试框架的思考和设计02-设计篇

一个通用的单元测试框架的思考和设计03-实现篇-核心类源码

22/2<12
重磅发布,2022软件测试行业现状调查报告~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号