什么是dbunit以及为什么要使用它?
dbunit是一个基于junit扩展的数据库测试框架。它提供了大量的类对与数据库相关的操作进行了抽象和封装,虽然在80%的情况,你只需使用它极少的api。它通过使用用户自定义的数据集以及相关操作使数据库处于一种可知的状态,从而使得测试自动化、可重复和相对独立。虽然不用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)
实战
见:http://blog.csdn.net/pwlazy/archive/2006/05/08/713018.aspx
总结
通过与以前的例子比较发现:使用dbunit的testcase更自动化和可重复,以前写的testcase与数据库中的数据严重耦合,所以一般都不敢写断言,写了之后怕数据又发生变化,所以测试也是不可重复,并且也不是自动化,因为没有断言,你不得不测试完之后还得检查数据库。
当然dbunit也许并不是银弹,它在并发测试的时候得表现我没有实践过,也不敢妄下断言,而且是不是应该另外再建一个同样的数据专门测试dao还值得思考
我们在项目中为每个开发人员自建一个数据库解决并发问题,也许这个方案并非最佳,但实用
分享到:
相关推荐
入门教程可能涵盖以下内容: 1. 安装与依赖:介绍如何添加 DBUnit 和相关依赖到项目中。 2. 创建数据集:讲解如何编写 XML 数据集或 CSV 数据集。 3. 数据库连接:解释如何通过 JDBC 建立数据库连接并创建 `...
**DbUnit 入门指南** DbUnit 是一个用于数据库测试的开源 Java 工具,它提供了数据驱动测试的框架,可以有效地管理和填充测试数据库。在软件开发中,尤其是在进行单元测试时,确保数据库状态的一致性至关重要。...
DBUnit 是一个开源的 Java 库,专门用于数据库测试,它是 xUnit 测试框架(如 JUnit)的一个扩展。在软件开发中,确保数据库状态的一致性和准确性是至关重要的,尤其是在进行集成测试时。DBUnit 提供了一种简单且...
PHPUnit下载入门我们分发了一个PHP存档(PHAR),其中包含使用PHPUnit所需的一切。 只需从此处下载它,使其可执行,然后将其放入$ PATH中,例如:➜&nbs此扩展不再维护用于数据库交互测试的DbUnit PHPUnit扩展。 ...
快速入门示例Spring DBUnit提供了Spring测试框架和DBUnit项目之间的集成。 在这个例子中,我们展示了如何使用Hypersonic内存数据库测试Hibernate JPA项目。依存关系该项目将使用Apache Maven构建。 这是完整的POM...
- **扩展性**:能够与第三方工具或框架(如Mockito、Dbunit等)良好配合,以支持模拟对象、断言和数据库操作等功能。 ##### 2. 测试框架的对比 - **JUnit**: JUnit是最早也是最广泛使用的Java单元测试框架之一,...
在后台广泛使用的一组测试工具: dbunit, reset -assured,xml-unit,json-unit 入门 1)安装 玛文 < groupId>io.github.adven27 < artifactId>exam-ms < version>5.0.0 Gradle testCompile " io.github....
《Hibernate Quickly》是一本专注于Java领域中的Hibernate框架的入门书籍,由Patrick Peak和Nick Heudecker共同撰写。这本书旨在帮助读者快速掌握Hibernate的核心概念和技术,是Java教程类标签下的一个优秀资源。 #...
为了确保代码的质量,本书还强调了单元测试的重要性,并介绍了如何使用JUnit和DBUnit进行单元测试,以及如何将测试集成到持续集成流程中。单元测试能够帮助开发者及时发现并修复代码中的错误,提高软件的稳定性和...
第2章 快速入门 2.1 实例功能概述 2.1.1 比Hello World更适用的实例 2.1.2 实例功能简介 2.2 环境准备 2.2.1 创建库表 2.2.2 建立工程 2.2.3 类包及Spring配置文件规划 2.3 持久层 2.3.1 建立领域对象 2.3.2 UserDao...
第2章 快速入门 2.1 实例功能概述 2.1.1 比Hello World更适用的实例 2.1.2 实例功能简介 2.2 环境准备 2.2.1 创建库表 2.2.2 建立工程 2.2.3 类包及Spring配置文件规划 2.3 持久层 2.3.1 建立领域对象 2.3.2 UserDao...
SpringSide是一个基于Spring框架的开源项目,旨在为Java开发者提供一个快速入门Spring的实例。这个压缩包中的springside-3.1.3.1-src是该项目的源代码,是学习和研究Spring框架整合的经典示例。 1. **Spring框架**...
它包含了诸如 Hibernate、ibatis、Struts、Spring、DBUnit、Ant、Log4J、Struts Menu、Xdoclet、SiteMesh、OSCache、JUnit 和 JSTL 等组件。这些工具和框架被精心集成到一起,以便为开发者提供一套完整的开发解决...
- **第1章:JUnit入门**:介绍如何快速上手JUnit,包括环境搭建、第一个测试案例等。 - **第2章:探索JUnit**:深入探讨JUnit的核心功能和高级特性。 - **第3章:软件测试原则**:讲解软件测试的基本原理,帮助...