`
l4432848
  • 浏览: 255369 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

DBUnit数据库测试

    博客分类:
  • java
 
阅读更多

 

DBUnit数据库测试:

DBUnit是一个基于junit扩展的数据库测试框架。它提供了大量的类对与数据库相关的操作进行了抽象和封装。它通过使用用户自定义的数据集以及相关操作使数据库处于一种可知的状态,从而使得测试自动化、可重复和相对独立。虽然不用dbunit也可以达到这种目的,但是我们必须为此付出代价(编写大量代码,测试及维护),既然有了这么优秀的开源框架,我们又何必再造轮子。 普通的测试数据库的方法不仅较为麻烦,而且在对数据库测试完后会残留数据【学Java,到凯哥学堂kaige123.com】在数据库里或者把数据库的数据修改了,相对于普通的测试,dbunit可以将数据库已有的数据保存到xml文件上,以免在对数据库进行测试时破坏里面的数据。 可以直接在Maven工程里下载dbunit依赖包,普通工程的话直接导入jar包到工程环境即可。 Maven工程配置dbunit依赖包示例:

image

我们先单纯用JUnit做一个普通的数据库测试,以此来查看这种测试的弊端。 1.准备一个有些许数据的数据库表格:

image

2.接着先编写一个Student类,将这个类的属性封装一下,然后再将这个类的属性信息写入输入库:

image

3.写一个专门的类来得到数据库连接对象

image

4.编写一个类,用于将Student属性数据写入到数据库,这个类具有更新、插入、删除、查询数据的方法:

image

image

image

image

5.编写测试类,进行测试,在这里我只测试了插入数据方法:

image

image

测试结果:

image

但是这样子数据库会残留测试的数据:

image

虽然这种情况可以将表格创建一个副本出来,然后对表格副本进行测试,这样就避免了会破坏表格里的数据,但是这种方法比较麻烦,而且有些情况就是想直接对表格进行测试【学Java,到凯哥学堂kaige123.com】而不想对副本进行测试,那么就需要使用DBUnit工具,DBUnit有一个DatabaseOperation类可以在测试前先将数据库已有的数据保存到xml文件上,然后测试完成之后再将这个xml文件里的数据还原到数据表格里,这样就避免在对数据库进行测试时破坏里面的数据。 先介绍一下DatabaseOperation类,该类是一个抽象类代表了对数据库的操作,例如CUD以及其组合等, 它采用了退化的工厂模式,可直接通过它获取其具体的子类,使用这个类可以在测试完后还原数据库的表格数据: DatabaseOperation:

NONE:不执行任何操作,是getTearDownOperation的默认返回值。

UPDATE:将数据集中的内容更新到数据库中。它假设数据库中已经有对应的记录,否则将失败。

INSERT:将数据集中的内容插入到数据库中。它假设数据库中没有对应的记录,否则将失败。

REFRESH:将数据集中的内容刷新到数据库中。如果数据库有对应的记录,则更新,没有则插入。

DELETE:删除数据库中与数据集对应的记录。

DELETE_ALL:删除表中所有的记录,如果没有对应的表,则不受影响。

TRUNCATE_TABLE:与DELETE_ALL类似,更轻量级,不能rollback。

CLEAN_INSERT:是一个组合操作,是DELETE_ALL和INSERT的组合。是getSetUpOeration的默认返回值。

使用DBUnit工具进行测试: 前4步和上面的一样,不同的就在于第5步测试类的编写:

image

image

image

image

image

测试结果:

image

image

xml文件内容,这个文件就是以xml格式来存储数据库表格的数据:

image

使用DBUnit工具测试完后,数据库表格里的数据就不会出现测试数据残留或者数据损坏了:

image

0
0
分享到:
评论

相关推荐

    dbunit数据库测试工具

    用于数据库测试的一个工具,具有很强的灵活性。也是自己在网上找的,分享一下

    Dbunit数据库连接下载

    总的来说,Dbunit是一个强大的数据库测试框架,它简化了在Java项目中对数据库的操作,尤其是在测试环境中。通过与Flash的结合,还能实现前后端的深度交互,增强应用的数据库管理能力。正确理解和使用Dbunit,可以极...

    使用dbunit测试数据库

    在使用 DbUnit 进行数据库测试时,首先需要准备测试环境。在这个例子中,我们创建了一个名为 "student" 的测试数据库,该数据库是在 MySql 中建立的。接着,在一个名为 "DBUnitSample" 的 Java 工程中,导入了 ...

    使用DbUnit测试数据库.pdf

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

    spring+dbunit测试访问数据库代码

    描述中的博文链接虽然没有具体内容,但通常会包含详细的步骤或示例代码,说明如何在Spring项目中设置和使用DBUnit进行数据库测试。 以下是基于给定的文件名可能涵盖的知识点: 1. **DBUnitDataLoaderImpl.java**:...

    DBUnit_Project_Study.rar

    在“DBUnit数据库测试资料.rar”中,可能包含的是DBUnit的使用指南、示例代码和最佳实践。而“dbunit_test”可能是实际的测试项目,包含配置文件、测试类和数据集文件,供学习者实践和理解DBUnit的工作原理。 总之...

    单体测试-Guide.pdf

    私有方法测试是指在单元测试中测试私有方法的方法,而 DBUnit 是一个常用的数据库测试辅助工具,可以帮助开发人员快速地测试数据库中的数据。 单体测试的重要性不言而喻。通过单元测试,可以快速地檢出代码中的错误...

    spring与dbunit集成测试

    在软件开发中,Spring框架是Java企业级应用的主流选择,而DBUnit则是一个用于数据库测试的工具。本文将深入探讨如何将Spring与DBUnit整合,以实现高效、可靠的数据库集成测试。 首先,理解Spring的核心功能是至关...

    Junit+dbunit单元测试jar包

    `Junit` 和 `dbunit` 是两个非常重要的工具,它们分别针对Java应用程序的单元测试和数据库测试提供支持。让我们详细了解一下这两个库以及如何将它们结合使用。 `Junit` 是一个流行的开源Java单元测试框架,由Ernst ...

    DBUnit 进行单元测试

    DBUnit 是一个强大的Java库,专门用于数据库的单元测试。它与JUnit和其他测试框架结合使用,可以帮助开发者在数据库层面上确保代码的正确性。DBUnit 提供了一种结构化的方式来导入和导出数据库数据,使得测试环境...

    通过DBUNIT做批量对比测试

    DBUNIT 是一个开源的 Java 库,专门用于数据库测试,它提供了一种结构化的方法来设置和验证数据库的状态。在软件开发中,测试是保证代码质量和功能正确性的重要环节,而 DBUNIT 尤其适用于对数据库操作进行测试,...

    dbunit单元测试

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

    dbunit测试demo

    DBUnit 是一个 Java 编程语言的开源工具,专门用于数据库的单元测试。它与JUnit 结合使用,提供了一种结构化的方法来设置和验证数据库的状态,确保代码的正确性。在进行数据库驱动的应用程序开发时,DBUnit 可以帮助...

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

    5. 集成其他测试框架:DbUnit 可以与JUnit、TestNG等主流的Java测试框架结合使用,为数据库测试带来便利。 在 `dbunit-2.2.3-prj.rar` 这个压缩包中,可能包含以下内容: - `www.pudn.com.txt`:这可能是一个说明...

    DBUnitPHPUnit的数据库测试库

    总的来说,DBUnit作为PHPUnit的扩展,极大地简化了PHP应用程序中的数据库测试工作。它不仅提供了强大的数据集管理和比较工具,还能确保测试环境的一致性,从而提高测试覆盖率和代码质量。无论你是新手还是经验丰富的...

    数据库操作的单元测试

    DBunit允许开发者在测试前将数据库的状态设定为一个特定的状态,并在测试结束后将其恢复到初始状态。这样可以确保每次测试都是独立的,并且不会受到外部因素的影响。其核心工作原理包括以下几个步骤: 1. **备份...

    DBUNIT使用

    在使用 DbUnit 进行数据库测试时,用户需要连接到真实数据库,并拥有对数据库或者至少是其中的模式(schema)的独占访问权限,以免不同的开发人员同时运行测试时相互冲突。 DbUnit 的使用场景非常广泛,例如可以...

Global site tag (gtag.js) - Google Analytics