`
zhtch_123
  • 浏览: 83313 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

DbUnit 简介和使用 (puts your database into a known state)

 
阅读更多

DbUnit 简介

1. 引言

在写持久层测试用例的时候,由于我们的测试是要依赖于外部的数据库,数据库里面的数据影响我们测试,往往是要在数据库中去查询得到数据表数据的状态,然后才能在 TestCase 里面写断言。数据表的状态又是可变的,所以经常要在此来回切换。可能产生如下场景:

1) 要测试 findAll 方法,这个时候我们要去数据库里去先写个 count(*) 之后,才能写 assertEquals(result.size(),size)

2) 要测试 updateMember(), 要先去数据库里查一条数据,并记下之前的状态,然后才能写 upadate TestCase

3) 要测试 insert ,要先去数据库要先看下某主键是否已经被使用。

4) 要测试 delete ,要先去数据库里面去查找是否某条数据存在。

如果说我们在跑某一个测试用例的时候,总是已经知道了数据表里面当前的数据状态,那么就省了这种频繁的来回切换。 DbUnit 就是为了这个而产生。

2. dbunit 基本原理

DbUnit is a JUnit extension (also usable with Ant) targeted at database-driven projects that, among other things, puts your database into a known state between test runs. This is an excellent way to avoid the myriad of problems that can occur when one test case corrupts the database and causes subsequent tests to fail or exacerbate the damage.(Dbunit Junit 的一个扩张。用于基于数据的项目。在测试时,使你的数据库处于一种已知的状态。是一种避免因为某些测试用例失败导致相关的测试失败而产生的大量的问题。 )

Dbunit 基本原理就是在跑测试用例运行之前对数据表做用户定义的操作,清空不想要的数据,插入用户自定义的数据,使得该数据表处于用户知道的一种状态。而用户自定义的数据使用项目里的一个 xml 文件来表示。 Xml 文件里面的数据代表了当前的数据状态,用户可以通过 xml 文件了解当前数据表的状态。同时在测试用例跑完之后,用户可以定义使得数据表处于一种用户想要的状态。一个测试用例的运行过程如下:

 

dbunit

1 :测试用例运行过程。

一般的一个测试用例结构如下:

关于 getSetUpOperation getTearDownOperation 的个解释:

DatabaseOperation.CLEAN_INSERT :先清空数据表里的数据,再插入 getDataSet 返回的数据到数据表中。是 getSetUpOperation 的默认状态 ( 这个操作会使得数据库始终处于只有几条固定数据的状态,也是我们最常用的一种方式 )

DatabaseOperation.NONE: 不做任何事情。

还有 DatabaseOperation.UPDATE DatabaseOperation.INSERT DatabaseOperation.REFRESH DatabaseOperation.DELETE DatabaseOperation.DELETE_ALL DatabaseOperation.TRUNCATE CompositeOperation TransactionOperation IdentityInsertOperation 等几个状态,具体参考官网: http://dbunit.sourceforge.net/components.html#cleanInsert

3. 例子

假设有这样一张表:

我们要对 IMemberDao 的实现类做如下三个方法的测试:

public List<Member> listAllMember(); //list all Members.

public Member findMemberById(long id); //find a Member by Id.

public boolean insertMember(Member member); //insert a member record.

假设我们要使数据表 member 处于如下状态:有三条用户自定义的记录,我们可以写一个 MemberSet.xml:

<?xml version='1.0' encoding='UTF-8'?>

<dataset>

<member id="1" memberid="ant" name="sky" pass="123"

email="abing37@126.com" gender="male" birthday="1985-06-21" />

<member id="2" memberid="ant" name="abing" pass="123"

email="abing37@126.com" gender="male" birthday="1985-06-21" />

<member id="3" memberid="ant" name="yblin" pass="123"

email="abing37@126.com" gender="male" birthday="1985-06-21" />

</dataset>

我们的测试用例可以这样写:

通过以上的测试用例,我们只需要关注工程里的 MemberSet.xml 文件就可以完全了解数据库当前的状态了。

分享到:
评论

相关推荐

    DbUnit2.4.9

    dbUnit is a JUnit extension targeted for database-driven projects that, among other things, puts your database into a known state between test runs. Last Updated: 2015-09-07

    dbunit-2.2.3.jar

    DbUnit is a JUnit extension (also usable with Ant) targeted for database-driven projects that, among other things, puts your database into a known state between test runs. This is an excellent way to ...

    dbunit 2.4.4, jar包及源码

    DbUnit is a JUnit extension (also usable with Ant) targeted at database-driven projects that, among other things, puts your database into a known state between test runs. This is an excellent way to ...

    DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类

    DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类...

    dbunit-2.4.7所有jar以及dbunit入门教程

    在使用 DBUnit 进行测试时,首先需要引入 dbunit-2.4.7.jar 和其他必要的依赖库,如 JDBC 驱动。接下来,创建一个 `IDatabaseConnection` 实例,该实例代表与数据库的连接。然后,可以使用 `DatabaseConfig` 来配置 ...

    介绍dbunit的使用和原理,核心组件介绍

    DbUnit 是一个针对数据库驱动项目的JUnit...在实际项目中,结合使用DbUnit和其他单元测试框架(如JUnit或TestNG),可以形成强大的测试解决方案,确保整个应用程序的质量,特别是在金融等对数据精确度要求极高的领域。

    dbunit单元测试

    DBUnit 是一个强大的开源工具,专门用于数据库的单元测试,它是JUnit框架的一个扩展,使得开发者在进行测试时能够更有效地管理和控制数据库...了解和掌握DBUnit的使用,对于提高软件的测试覆盖率和稳定性具有重要意义。

    dbunit使用必需Jar包

    DBUnit 是一个开源的 Java 工具,它与JUnit结合使用,用于数据库的测试驱动开发(TDD)。在Java应用程序的测试过程中,确保数据库状态的一致性是非常重要的,DBUnit 提供了这样的功能,它允许开发者导入和导出数据库...

    dbunit使用实例

    DBUnit 是一个开源的 Java 库,专门...通过深入理解和熟练使用 DBUnit,你可以更高效地管理测试数据,确保数据库相关的测试更加稳定和可靠。结合 JUnit 或其他测试框架,DBUnit 能帮助你构建强大的数据库测试解决方案。

    dbunit-2.4.9 源码

    3. `docs/` 目录:可能包含 API 文档、用户指南和其他相关文档,便于理解和使用 DBUnit。 4. `build.xml`:Ant 构建文件,用于构建和打包 DBUnit。 5. `pom.xml`(如果存在):Maven 项目配置文件,用于管理依赖和...

    单元测试JUnit4和DbUnit

    在测试前,使用DbUnit的DatabaseConfig和DataSet来加载XML或CSV格式的测试数据到数据库。典型的流程包括:连接数据库、初始化数据库状态、执行测试方法、并在测试后清理数据库状态。DbUnit的Clean和Insert模式可以...

    如何使用DBUnit做数据备份恢复

    DBUnit 是一个开源的 Java 库,专门用于数据库测试,它提供了一种方式来管理和操作数据库的数据,包括数据的导入导出、备份和恢复。在本文中,我们将深入探讨如何利用 DBUnit 进行数据库的备份与恢复。 首先,我们...

    DBUNIT使用手册

    DBUNIT的核心在于它将数据库状态抽象为可预知的数据集,允许开发者使用XML等格式定义测试数据,确保测试的可重复性和独立性。 在安装DBUNIT时,你需要下载最新版本的DBUNIT开发包,例如DBUNIT-2.4.8.zip,并将其...

    DBUnit最佳实践之使用ant命令

    DBUnit 是一个 Java 开发者常用的数据库测试工具,它与JUnit等测试框架配合,能够帮助开发者在测试过程中管理和填充数据库,确保数据的一致性和准确性。本文将深入探讨如何结合Ant构建自动化测试流程,利用DBUnit...

    DBUnit 进行单元测试

    3. 设置数据表:在测试类中,使用DBUnit的`IDataOperation`接口,如`IDataSet`和`ITable`,来操作数据。 4. 执行操作:在测试方法中,使用`DatabaseOperation`类的静态方法,如`CLEAN_INSERT`或`OVERWRITE`,来加载...

    dbunit帮助文档(HTML版)

    3. 查看示例代码,理解如何在自己的项目中集成和使用DBUnit。 4. 遇到问题时,可以查阅官方文档或访问`www.dbunit.org`获取更多支持。 总之,DBUnit帮助文档(HTML版)为开发者提供了一站式的数据库测试解决方案,...

    DBUnit使用文档

    DBUnit 是一个 Java 开发工具,专门用于数据库的测试,它与单元测试框架如 JUnit 配合使用,确保在测试前后数据库的状态正确无误。DBUnit 的核心思想是在执行测试之前清空并填充测试数据,然后在测试完成后恢复原始...

    Dbunit数据库连接下载

    doc 文件夹可能包含了Dbunit的API文档或者其他技术文档,这些文档对于理解和使用Dbunit非常有帮助,它们详细解释了各个类和方法的功能,以及如何在项目中正确使用。 总的来说,Dbunit是一个强大的数据库测试框架,...

    dbunit开发文档

    1. JUnit 集成:DBUnit 可以很容易地与 JUnit 结合使用,通过 `@Before` 和 `@After` 注解来设置和清理数据库。 2. Spring 集成:如果你的项目使用 Spring,可以利用 Spring's `DbUnitTestExecutionListener` 来...

Global site tag (gtag.js) - Google Analytics