码迷,mamicode.com
首页 > 数据库 > 详细

DBUnit单元测试

时间:2015-02-17 15:21:51      阅读:294      评论:0      收藏:0      [点我收藏+]

标签:dbunit测试   数据操作单元测试   dbunit   

        DBUnit测试是junit的一个扩展框架,主要用于对于数据库的测试,它的测试原理总体可以分为三步:

一、数据备份  将于测试相关的表备份起来,即将表以XML的形式写入到xml文件中保存起来

二、准备需要测试的数据写入到表中,然后进行相关的测试

三、还原数据  将备份的数据写入到原表中去


与dbunit相关的主要API

 IDatabaseConnection   这个是于dbunit相关的数据连接,它是通过java.sql.Connection为参数来获得

IDatabaseConnection con=new  DatabaseConnection(java.sql.Connection);


IDataSet  于dbunit相关的数据集,数据集来源可以是数据库中的表,也可以是xml文件中的数据

IDataSet set=iDatabaseConnection.createDataSet();  //数据表获取

set=new FlatXmlDataSet(new File("src/test/resources/data.xml"));//xml文件中获取


FlatXmlDataSet  可以认为是一个xml文件格式(属性格式的)的数据集类,另外一个与之对应的是XmlDataSet(子元素格式的) 我们经常使用

FlatXmlDataSet.write(set, new FileWriter(new File("src/test/resources/user.xml")));  用于数据备份中,将IDataSet数据集对象set写入到指定的xml文件中去user.xml

属性格式:

   <?xml version=‘1.0‘ encoding=‘UTF-8‘?>
<dataset>
  <user id="1" name="zhangsan" age="20" sex="男"/>
</dataset>

子元素格式

<?xml version="1.0" encoding="utf-8"?>

<dataset>

  <user>

      <id>1</id><name>zhangsan</name><age>20</age><sex>男</sex>

 </user>

</dataset>



DatabaseOperation  这是一个数据操作类 主要用于对据库中表进行相关的操作,然后插入新的数据

例如:  DatabaseOperation.CLEAN_INSERT.execute(con, set);//表示将与IDatabaseConnextion对象con先关联的表clean然后向表中插入IDataSet对象set。

//DatabaseOperation.DELETE.execute(con, set);   //删除 不插入
// DatabaseOperation.DELETE_ALL.execute(con, set);
//DatabaseOperation.CLEAN_INSERT.execute(con, set); //删除原有的数据 插入数据集中的数据
    // DatabaseOperation.INSERT.execute(con, set);  //不删除原有的数据 插入新的数据


实例:

一、数据备份

     public void backup()
{
try {
IDatabaseConnection con=new DatabaseConnection(ConnectionUtil.getConnection());
IDataSet set=con.createDataSet();
FlatXmlDataSet.write(set, new FileWriter(new File("src/test/resources/user.xml")));
} catch (DatabaseUnitException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

二 、测试操作

    public void insertUserTest() throws Exception
{
User u=new User("1", "zhangsan", "男", 20);
IDatabaseConnection con=new DatabaseConnection(ConnectionUtil.getConnection());
IDataSet set=new FlatXmlDataSet(new File("src/test/resources/data.xml")); //data.xml中的数据就是一个u
DatabaseOperation.CLEAN_INSERT.execute(con, set);                                        //对象数据
UserManagement um=new UserManagement();
        User ut=um.searchUserById("1");
Assert.assertNotNull("ut 为空",ut);
Assert.assertEquals(u.getId(), ut.getId());
Assert.assertEquals(u.getName(), ut.getName());
Assert.assertEquals(u.getAge(), ut.getAge());
Assert.assertEquals(u.getSex(), ut.getSex());
}

    


三 、还原数据

        public void resum() throws Exception
{
IDatabaseConnection con=new DatabaseConnection(ConnectionUtil.getConnection());
IDataSet set=new FlatXmlDataSet(new File("src/test/resources/user.xml"));
DatabaseOperation.CLEAN_INSERT.execute(con, set);
}



在以上实例中我们是备份了相连数据库中的所有的表格,我们也可以只备份与操作相关的表格

   public void backupOneTable() throws Exception
{
IDatabaseConnection con=new DatabaseConnection(ConnectionUtil.getConnection());
QueryDataSet qset=new QueryDataSet(con);
qset.addTable("user");  //添加需要被备份的表格的表格名
FlatXmlDataSet.write(qset, new FileWriter(new File("src/test/resources/u.xml")));
}


 在每一次进行数据的删除、添加、修改等都需要进行数据的备份与还原,因此我们可以将数据的备份与还原方法使用

@Before和@After注解。








DBUnit单元测试

标签:dbunit测试   数据操作单元测试   dbunit   

原文地址:http://blog.csdn.net/u013516966/article/details/43866109

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!