dbunit使用教程-junit单元测试

2018-09-05|来源:

DbUnit(http://dbunit.sourceforge.net/ ) 用来隔离数据库的访问,对junit测试数据库的一个扩展,可以先备份数据库,测试完成之后,再把之前已有的数据还原回来。


快速入门

1、导入jar包

dbunit.jar

slf4j.jar


2、创建dbunit的测试数据xml文件

<?xml version="1.0" encoding="UTF-8"?>
<dataset>
  <!-- <t_user>
    <id>1</id>
    <username>kh</username>
    <password>123</password>
    <nickname>孔浩</nickname>
  </t_user> -->
  <t_user id="1" username="admin" password="123" nickname="超级管理员"/>
</dataset>


3、创建dbunit的Connection

dbunit的Connection是用来对数据文件进行操作的,这个Connection必须依赖于目前项目中所使用的Connection

IDatabaseConnection con = new DatabaseConnection(DbUtil.getConnection());



4、创建IDataSet,通过DATASet来获取测试数据中的数据

/*
 * FlatXmlDataSet用来获取基于属性存储的属性值
 * XMLDataSet用来获取基于节点类型存储的属性值
 */
IDataSet ds = new FlatXmlDataSet(
        new FlatXmlProducer(
        new InputSource(
        TestDbUnit.class.getClassLoader().getResourceAsStream("t_user.xml"))));


5、初始化数据并且完成测试

//会将数据库中的数据清空,并且把测试数据插入
DatabaseOperation.CLEAN_INSERT.execute(con, ds);
 
//从DAO中获取数据并且完成测试
IUserDao ud = new UserDao();
User tu = ud.load("admin");
assertEquals(tu.getId(), 1);
assertEquals(tu.getUsername(), "admin");
assertEquals(tu.getPassword(), "123");
assertEquals(tu.getNickname(), "超级管理员");


数据备份和还原

1、备份数据库的所有文件

根据con创建相应的dataset,这个dataset包含了所有的表,将ds中的数据通过FlatXmlDataSet的格式写到文件中即可完成备份

@Test
  public void testBackup() {
    try {
       //创建dbunit的Connnection,需要传入一个数据库的connection作为参数
       IDatabaseConnection con = new DatabaseConnection(DbUtil.getConnection());
       //根据con创建相应的dataset,这个dataset包含了所有的表
       IDataSet ds = con.createDataSet();
       //将ds中的数据通过FlatXmlDataSet的格式写到文件中
       FlatXmlDataSet.write(ds, new FileWriter("d:/test.xml"));
    } catch (DataSetException e) {
       e.printStackTrace();
    } catch (DatabaseUnitException e) {
       e.printStackTrace();
    } catch (SQLException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
    } catch (IOException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
    }


2、备份指定表

通过QueryDataSet可以有效的选择要处理的表来作为数据集 ,传入表名即可完成备份

public void testBackupTable() {
    try {
       //创建dbunit的Connnection,需要传入一个数据库的connection作为参数
       IDatabaseConnection con = new DatabaseConnection(DbUtil.getConnection());
       //通过QueryDataSet可以有效的选择要处理的表来作为数据集 
       QueryDataSet backup = new QueryDataSet(con);
       //添加t_user这张表作为备份表
       backup.addTable("t_user");
       FlatXmlDataSet.write(backup, new FileWriter("d:/test.xml"));


3、还原数据

@Test
public void testResume() {
    try {
        //创建dbunit的Connnection,需要传入一个数据库的connection作为参数
        IDatabaseConnection con = new DatabaseConnection(DbUtil.getConnection());
        //根据备份文件创建dataset
        IDataSet ds = new FlatXmlDataSet(
            new FlatXmlProducer(new InputSource(
        new FileInputStream("d:/test.xml"))));
        DatabaseOperation.CLEAN_INSERT.execute(con, ds);
    } catch (DataSetException e) {
        e.printStackTrace();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (DatabaseUnitException e) {
        e.printStackTrace();
    } catch (SQLException e) {
        e.printStackTrace();
    }
     
}


本文转自网络


相关问答

更多

如何使用junit4写单元测试用例

JUnit4是JUnit框架有史以来的最大改进,其主要目标便是利用Java5的Annotation特性简化测试用例的编写。 先 简单解释一下什么是Annotation,这个单词一般是翻译成元数据。元数据是什么?元数据就是描述数据的数据。也就是说,这个东西在Java里面可以 用来和public、static等关键字一样来修饰类名、方法名、变量名。修饰的作用描述这个数据是做什么用的,差不多和public描述这个数据是公 有的一样。想具体了解可以看Core Java2。废话不多说了,直接进入正题。 我们 ...

java测试工具及教程

测试看你是什么类型的测试 单元测试:Junit或TestNG Web测试:WatiJ、Selenium2.0 功能测试及压力测试:Jmeter、LoadRunner Bug管理:TestDirector

java spring项目的controller层的代码怎么用junit写单元测试用例

Spring项目controller 是依赖springmvc的 直接启动测试,是没有初始化spring容器(web.xml中初始化)的 如果是dao层 service层的测试可以用单元测试,controller层建议还是 启动web项目吧 补充一下Java WEB开发基础知识

Spring Boot中使用Test单元测试报错javax.websocket.server.ServerContainer not available。

那说明单元测试里面没有包含servercontainer吧,单元测试加载的东西没有项目正规启动以后那么多,需要仔细检查如何在单元测试中加载servercontainer。

Junit是什么??java的单元测试??java的单元测试是干什么的??单元测试是干什么的??

单元测试:是针对一个独立的工作单元进行正确性验证的测试。有时也被称为程序员测试,以同QA测试、客户测试相区分。 java的单元测试:在Java程序中,一个工作单元通常是指一个方法,那么也就是对一个方法进行测试。 JUnit:是一个单元测试框架,方便程序员进行单元测试代码的编写。

junit教程

相关文章

更多

最近更新

更多