`

dbunit一个基于junit扩展的数据库测试框架

阅读更多

【概念】
  dbunit是一个基于junit扩展的数据库测试框架。它提供了大量的类对与数据库相关的操作进行了抽象和封装,虽然在80%的情况,你只需使用它极少的api。它通过使用用户自定义的数据集以及相关操作使数据库处于一种可知的状态,从而使得测试自动化、可重复和相对独立。虽然不用dbunit也可以达到这种目的,但是我们必须为此付出代价(编写大量代码,测试及维护),既然有了这么优秀的开源框架,我们又何必再造轮子。
  DbUnit是为数据库驱动的项目提供的一个对JUnit 的扩展,除了提供一些常用功能,它可以将你的数据库置于一个测试轮回之间的状态。
  【简介】
  为依赖于其他外部系统(如数据库或其他接口)的代码编写单元测试是一件很困难的工作。在这种情况下,有效的单元必须隔离测试对象和外部依赖,以便管理测试对象的状态和行为。
  使用mock object对象,是隔离外部依赖的一个有效方法。如果我们的测试对象是依赖于DAO的代码,mock object技术很方便。但如果测试对象变成了DAO本身,又如何进行单元测试呢?
  开源的DbUnit项目,为以上的问题提供了一个相当优雅的解决方案。使用DbUnit,开发人员可以控制测试数据库的状态。进行一个DAO单元测试之前,DbUnit为数据库准备好初始化数据;而在测试结束时,DbUnit会把数据库状态恢复到测试前的状态。
  【原理】
  dbunit的与单元测试相关的两个最重要的核心是org.dbunit.database.IDatabaseConnection 和 org.dbunit.dataset.IDataSet ,前者是产品代码使用的数据库连接的一个简单的封装,后者是对单元测试人员自定义的数据集(通常以xml文件的形式存在,且xml文件的格式也有好几种)的封装。
  还有一个很重要的咚咚就是org.dbunit.operation.DatabaseOperation,该类是一个抽象类代表了对数据库的操作,例如CUD以及其组合等, 它采用了退化的工厂模式,可直接通过它获取其具体的子类(代表具体的某种操作)如下:
  DatabaseOperation.UPDATE
  DatabaseOperation.DELETE
  DatabaseOperation.DELETE_ALL
  DatabaseOperation.TRUNCATE
  DatabaseOperation.REFRESH
  DatabaseOperation.CLEAN_INSERT
  DatabaseOperation.NONE
  工作流程如下:
  1)testcase.setup--->testcase.getConnection-->getDataSet----->operation.execute(
  通常DatabaseOperation.CLEAN_INSERT)
  2)testcase.testSomeMethod---->dao.someMethod
  3)testcase.teardown---->operation.execute(
  通常DatabaseOperation.DELETE_ALL或者DatabaseOperation.NONE)

分享到:
评论

相关推荐

    使用dbunit测试数据库

    它扩展了流行的单元测试框架 JUnit,使得在测试代码与数据库交互时能够更好地控制数据库的状态。通过 DbUnit,开发者可以设置和清理测试环境中的数据库数据,确保每次测试都能在一致的状态下运行。 在使用 DbUnit ...

    junit4.10+dbunit2.4.7+httpunit+junitperf的jar包

    DbUnit是一个用于数据库集成测试的工具,它与JUnit结合使用,可以确保在每次测试前后数据库的状态一致性。DbUnit允许用户导入和导出数据库数据到XML或CSV格式,通过`DataSet`的概念,可以在测试前后加载特定的数据...

    Junit+dbunit单元测试jar包

    `dbunit` 是一个与`Junit`配合使用的扩展库,专注于数据库的单元测试。它允许开发者在测试前后填充或清理数据库数据,确保每次测试都在一致的环境中进行。`dbunit` 提供了一种名为“数据集”的概念,数据集是一个XML...

    junit单元测试jar包集

    **DBUnit** 是一个用于数据库集成测试的工具,`dbunit-2.4.9.jar`是其2.4.9版本。DBUnit可以将数据库状态设置到已知的初始状态,执行测试,然后比较期望的结果。它支持多种数据格式(如XML或CSV),使得测试数据的...

    使用DbUnit测试数据库.pdf

    DbUnit 是一个专门用于数据库测试的Java库,它扩展了JUnit框架,使得对数据库依赖的代码进行单元测试变得更加便捷和可控。在进行数据库测试时,DbUnit 能够帮助我们管理和控制测试数据库的状态,确保每次测试都能在...

    dbunit-2.5.3所有资源

    dbunit是一个基于junit扩展的数据库测试框架。 更多资源详见: http://blog.csdn.net/fanxiaobin577328725/article/details/51894331 (包含图书各部分和随书源码,还有其它资源的详细下载地址)

    dbunit-2.2.3-prj.rar_DbUnit 2.2_dbunit_单元测试

    DbUnit 是一个专门为Java开发人员设计的开源工具,主要用于数据库系统的单元测试。它与JUnit紧密集成,使得在执行单元测试时能够对数据库的状态进行精确控制,确保测试的可重复性和可靠性。DbUnit 2.2.3 版本是这个...

    dbunit-2.4.9 源码

    DBUnit 是一个开源的 Java 库,专门用于数据库测试,它是 xUnit 测试框架的一部分,提供了数据驱动测试的解决方案。在版本 2.4.9 中,DBUnit 提供了一系列的功能,帮助开发者在进行单元测试时能够管理和操作数据库的...

    dbunit-2.0-src.zip_dbunit src_dbunit-2.1-src

    DBUnit 是一个强大的Java库,专门用于数据库的测试。它扩展了JUnit,使得数据库相关的单元测试变得更加简单和规范。在给定的压缩包文件中,我们有两个版本的DBUnit源码:`dbunit-2.0-src` 和 `dbunit-2.1-src`。这些...

    dbunit2.2

    DBUnit 是一个开源的Java库,它扩展了JUnit框架,为数据库相关的单元测试提供了一种结构化的方法。在“dbunit2.2”这个压缩包中,包含了DBUnit 2.2版本的所有必要文件,使得开发者能够有效地进行数据库的单元测试。 ...

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

    DBUnit 是一个开源的 Java 库,专门用于数据库测试,它是 xUnit 测试框架(如 JUnit)的一个扩展。在数据库驱动的项目中,DBUnit 可以帮助开发者确保数据库状态的一致性,使得测试更加可靠。DBUnit 2.4.7 版本包含了...

    使用EJB+Struts1.3+Ant+Cactus+DbUnit+JMeter+StrutsTest实现测试2

    2. Struts 1.3:Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,用于简化Web应用的开发。在Struts 1.3版本中,开发者可以利用ActionForm、Action、DispatcherServlet等组件构建和管理应用...

    [应用开发及迁移][客户端编程开发框架]Dbunit指南.pdf

    Dbunit是基于JUnit扩展而成,因此它继承了JUnit的所有特性,并在此基础上增加了针对数据库测试的功能。 **Dbunit的主要特点包括:** - **数据集管理:**允许用户通过XML文件或其他格式的数据集来初始化或填充...

    dbunit开发文档

    DBUnit 是一个开源的 Java 库,专门用于数据库测试,它是 xUnit 测试框架(如 JUnit)的一个扩展。在数据库驱动的项目中,DBUnit 提供了一种结构化的方法来设置和验证数据库状态,从而确保测试的一致性和可靠性。这...

    dbunit单元测试

    DBUnit 是一个强大的开源工具,专门用于数据库的单元测试,它是JUnit框架的一个扩展,使得开发者在进行测试时能够更有效地管理和控制数据库的状态。这个工具的主要目的是确保测试的隔离性和可重复性,使得每次测试都...

    junit和TestNG框架入门

    - **TestNG**: TestNG是一个基于JUnit和NUnit思想设计的新一代测试框架,提供了更丰富的特性和灵活性,包括但不限于并行测试执行、灵活的依赖管理、更强大的参数化支持等。TestNG相比JUnit在测试控制、重复执行、...

    主题:在Spring中结合Dbunit对Dao进行集成单元测试

    Dbunit是一款强大的Java库,它扩展了JUnit,为数据库提供了结构化数据的导入和导出,使得测试更加方便和可靠。下面将详细介绍如何在Spring中使用Dbunit进行Dao的集成单元测试。 首先,我们需要理解集成测试的概念。...

Global site tag (gtag.js) - Google Analytics