spring与dbunit集成测试

1.首先导入dbunit.jar,spring-mock.jar(数据回滚),junit.jar三个jar包

2.通过dbunit.jar包中的DatabaseConnection类获取数据库的连接:
  a.new DatabaseConnection(DriverManager.getConnection(url,user, password))通过jdbc建立与数据库的连接,其中url等参数可以通过properties文件获取.
  b.new DatabaseConnection(DataSourceUtils.getConnection(dataSource))通过dataSource建立与数据库的连接,其中DataSourceUtils为org.springframework.jdbc.datasource.DataSourceUtils.
  
3.根据dataset-xx.xml数据配置文件创建IDataSet对象(可以根据多个dataset-xx.xml文件创建IDataSet对象
  a. IDataSet dataSet = new FlatXmlDataSet(new ClassPathResource("com/taobao/dbunit/dao/user001.xml").getFile());
  b. private IDataSet buildDataSet(String[] datafiles) throws IOException, DataSetException {
     IDataSet[] dataSets = new FlatXmlDataSet[datafiles.length];
     for (int i = 0; i < datafiles.length; i++)
     dataSets[i] = new FlatXmlDataSet(getClass().getClassLoader().getResourceAsStream(datafiles[i]));
     return new CompositeDataSet(dataSets, false);
  }
  
4.通过org.dbunit.operation.DatabaseOperation对象的execute关键方法将IDataSet对象的数据插入,删除,更新到数据库.
    DatabaseOperation operation = DatabaseOperation.CLEAN_INSERT;表示插入操作. DatabaseOperation.DELETE表示删除操作等.
    operation.execute(DatabaseConnection,IDataSet);其中DatabaseConnection,IDataSet分别为第2,3部创建的对象.
   
5.测试类必须继承spring-mock.jar包下的AbstractDependencyInjectionSpringContextTests类对象,override类AbstractDependencyInjectionSpringContextTests
  中的onSetUp()和onTearDown()方法,即运行该测试类前首先会调用onSetUp()方法将dataSet-xx.xml数据初始化到数据库,然后测试,最后会自动调用
  onTearDown()来关闭数据库的连接。AbstractDependencyInjectionSpringContextTests封装了封装了载入Application Context和初始化Beans的功能,
  因此可以直接用实际工作代码中使用的Application Context配置文件即:
  protected String[] getConfigLocations() {
    return new String[] {"com/comwave/tcb/webui/service/impl/springContext-branch.xml","MyApplicationContext.xml"};
  }这样就可以将spring容器中的对象注入测试类中如:
  protected IBranchManager branchManager;
  public void setBranchManager(IBranchManager branchManager) {
  this.branchManager = branchManager;
 }
 其中AUTOWIRE_BY_TYPE:按类型匹配的方式进行自动装配,这个默认的机制;
      AUTOWIRE_BY_NAME:按名字匹配的方式进行自动装配
      AUTOWIRE_NO:不使用自动装配机制,这意味着你需要手工调用getBean()进行装配。
      缺省在用Setter设置Bean的时候,使用的是by type的机制

6.示例看附件,(示例为部分代码,不能运行)

你可能感兴趣的:(spring)