本文翻译自《JUnit in Action 2nd Edition》第十六章, 原书见
《DbUnit测试一 数据库测试挑战》附件。
二、DbUnit
DbUnit(http://www.dbunit.org) 是一个Junit的扩展,由Manuel LaFlamme于2002年创建,在Java测试还处于幼年的时候,没有什么框架关注数据库测试。在那个时候Richard Dalalaway写了一篇博文《数据库代码单元测试》,这就是DbUnit创作灵感来源。
从那时候开始,DbUnit变成了数据库测试的JAVA框架,它的开发也有所起伏。在一个高峰期之后(基本代码库已经创建好了),它面临了一段长时间的低落。幸运的是,很多新的开发者加入了,在这期间,这本书也写好了,几个新的版本已经发布,提供了很多改进,也修正了一些bug。
DbUnit有数百个类和接口。即使如此多类,DbUnit的使用大概就是从数据库获取数据和添加数据,这些数据使用dataset表示(更特别一点,它就是实现了dataset接口的类)。
下一节将看下dataset的基本使用和DbUnit其他的特性。
2.1 简单的应用程序
这一节主要是讲使用DbUnit测试JAVA应用程序的持久化层。为了方便,这层仅仅定义了一个接口,如下[Listing 1]所示:
[Listing 1]: DAO interface used in the examples
public interface UserDao {
long addUser(User user) throws SQLException;
User getUserById(long id) throws SQLException;
}
这个DAO接口(使用简单的JDBC)的实现没有写在这里,但是可以去本书的网站下载。User对象是一个简单的POJO, 如下[Listing 2]所示:
[Listing 2]: Domain model used in the examples
public class User {
private long id;
private String username;
private String firstName;
private String lastName;
// getters and setters omitted
}
User对象在数据库中对应users表,创建表的语句如下[Listing 3]所示:
[Listing 3]: SQL script that creates the users table
CREATE TABLE users (id INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH
1), username VARCHAR(10), first_name VARCHAR(10), last_name VARCHAR(10) )
最后一点,本例讲使用HSQLDB数据库,因为它是基于JAVA的,不需要更多的配置。HSQLDB是非常灵活的,它可以作为客户端、嵌入式运行,使用硬盘或者内存。最简单最快的方式是使用内存嵌入式数据库,这也是本例所使用这种模式。
2.2 创建DbUnit运行这个简单的程序
DbUnit本身仅有一个jar,唯一需要的外部依赖就是logging框架-SLF4J(Sample Logging Facade for Java). SLF4J需要2个jar: slf4j-api.jar(它包含slf4j框架的接口)和slf4j-nop.jar(它不记录任何东西;更多的内容将在以后讨论)。DbUnit要去连接数据库,当然要添加JDBC驱动到classpath(在本例中它就是hsqldb.jar).
这个简单的程序可以使用两种“风格”,Maven 和 Ant.使用 Maven 运行的命令是 "maven clean test". 类似地,使用Ant运行的命令是"Ant clean test". 这个程序用两种Eclipse project的方式:一种使用必要的库,另外一种使用DbUnit工程本身。
分享到:
相关推荐
在使用 DbUnit 进行数据库测试时,首先需要准备测试环境。在这个例子中,我们创建了一个名为 "student" 的测试数据库,该数据库是在 MySql 中建立的。接着,在一个名为 "DBUnitSample" 的 Java 工程中,导入了 ...
DBUnit 提供了一种结构化的方式来导入和导出数据库数据,使得测试环境可以被精确地设置和还原,避免了因为测试数据污染而引起的错误。 在进行单元测试时,DBUnit 允许我们将数据库的状态定义为“预期状态”(通常在...
标题“dbunit测试demo”表明这是一个关于如何使用 DBUnit 进行测试的实例。描述中提到的链接指向了一篇博客文章,这可能包含了一个具体的 DBUnit 测试用例的详细步骤和解释。尽管我们无法直接访问该链接,但我们可以...
标题中的“spring+dbunit测试访问数据库代码”指的是在Java开发中使用Spring框架与DBUnit进行集成,以实现对数据库的测试。DBUnit是用于数据库单元测试的工具,它可以加载和验证数据库的数据状态,确保测试的隔离性...
在本文中,我们将深入探讨DBUnit测试规范及其在软件开发中的应用。 首先,按照DBUnit测试规范,项目流程通常包括以下几个步骤: 1. **自动生成测试类**:基于被测试的接口,开发者应自动生成对应的test class文件...
集成Spring和DBUnit,主要目的是为了在测试环境中对数据库操作进行控制,确保测试的隔离性和准确性。以下是一些关键步骤: 1. **配置Spring测试环境**:使用Spring Test模块,创建一个继承自`...
在进行数据库测试时,DbUnit 能够帮助我们管理和控制测试数据库的状态,确保每次测试都能在一个已知且一致的数据环境中运行。这样可以避免因数据库状态变化导致的测试不准确或失败。 首先,为了使用DbUnit,你需要...
1. **准备数据集**:首先,你需要创建数据集文件,这些文件描述了测试前后期望的数据库状态。数据集通常包含列名和对应的值,可以使用 CSV(逗号分隔值)或 XML 格式。 2. **连接数据库**:使用 DBUNIT,你需要配置...
`Junit` 和 `dbunit` 是两个非常重要的工具,它们分别针对Java应用程序的单元测试和数据库测试提供支持。让我们详细了解一下这两个库以及如何将它们结合使用。 `Junit` 是一个流行的开源Java单元测试框架,由Ernst ...
DbUnit 的主要用途是准备数据库和验证数据库,它可以在执行每个测试方法前用已知内容设置表,并在执行每个测试方法后更方便地验证表的内容。 DbUnit 的使用可以分为两个部分:设置 DbUnit 和使用 DbUnit 进行测试。...
数据集是XML或CSV格式的文件,包含了数据库表的预定义状态,可以在测试开始前加载到数据库中,测试结束后再清理掉,这样就保证了每个测试用例都在一个干净的数据环境中执行。 使用DBUnit进行单元测试的基本步骤如下...
DbUnit则是一个专门用于数据库单元测试的工具,它允许开发者在测试前后对数据库的状态进行操作,如填充测试数据、清理数据等,以保证每次测试都在一致的环境中进行。 首先,了解JUnit4的基础知识至关重要。JUnit4...
DbUnit 是一个专门为Java开发人员设计的开源工具,主要用于数据库系统的单元测试。它与JUnit紧密集成,使得在执行单元测试时能够对数据库的状态进行精确控制,确保测试的可重复性和可靠性。DbUnit 2.2.3 版本是这个...
1. 数据初始化:在测试前,DBUnit 可以导入 CSV、XML 或 Excel 文件中的数据到数据库,设置测试环境的数据状态。 2. 数据验证:测试完成后,DBUnit 可以对比数据库的实际数据与预期结果,确保测试过程中数据库的状态...
DbUnit 的设计理念是,在测试之前,备份数据库,然后给对象数据库植入我们需要的准备数据,最后,在测试完毕后,读入备份数据库,回溯到测试前的状态。 DbUnit 测试基本概念和流程 DbUnit 的测试的主要接口是 ...
DBUnit 是一个开源的 Java 库,专门用于数据库...学习和掌握 DBUnit 能够显著提高数据库测试的效率和质量,确保应用程序在不同环境中的一致表现。对于任何处理大量数据库操作的项目,DBUnit 都是一个非常有价值的工具。
1. **配置Spring测试环境** 在Spring项目中,我们需要创建一个测试配置类,该类通常继承自`AbstractTransactionalDataSourceSpringContextTests`或`AbstractTransactionalJUnit4SpringContextTests`,这两个类提供...
总的来说,Dbunit是一个强大的数据库测试框架,它简化了在Java项目中对数据库的操作,尤其是在测试环境中。通过与Flash的结合,还能实现前后端的深度交互,增强应用的数据库管理能力。正确理解和使用Dbunit,可以极...