在做测试之前,我们需要对数据进行备份,用DBUnit可以很方便的对数据库中的数据进行备份和恢复。
下面我们来看看如何通过ant脚本命令才实现。
目录结构
- 项目结构图
- 需要用到的jar
- 运行前准备
- 运行与结果
- 源代码
- Ant编译文件
- 数据库脚本
- 参考文档
- 完整项目源代码
项目结构图
需要用到的jar
- commons-logging-1.1.1.jar
- dbunit-2.4.8.jar
- junit-4.9b2.jar
- mysql-connector-java-3.1.12-bin.jar
- slf4j-api-1.6.1.jar
- slf4j-jcl-1.6.1.jar
运行前准备
- 在MySQL的客户端,如Navicat Premium中执行sql文件夹中的dbup.sql文件,创建数据库和表;
- 打开Ant面板,eclipse中,Window -> Show View -> Others,然后输入 ant,选ant,然后点【OK】按钮;
- 将build.xml拖拽到Ant面板;
运行与结果
- 选择Ant面板中的dbunit-ant,点击三角箭头,可以看到不同的target;
- 选择export-all:
执行编译:点击右键,Run As -> Ant Build;
执行结果:导出所有表的数据至xml文件,存放在data/all-data.xml中; - 选择import-all:
执行编译:点击右键,Run As -> Ant Build;
执行结果:导入data/all-data.xml文件中的数据到数据库中; - 选择export-table-student:
执行编译:点击右键,Run As -> Ant Build;
执行结果:导出student表的查询结果及user表的全部数据到data/export-student.xml中; - 选择compare:
执行编译:点击右键,Run As -> Ant Build;
执行结果:比对数据库中的数据与data/init-data.xml文件中的数据。
源代码
Ant编译文件
build.xml
<?xml version="1.0" encoding="UTF-8"?> <project name="dbunit-ant" basedir="." default=""> <property name="db.driver" value="com.mysql.jdbc.Driver" /> <property name="db.url" value="jdbc:mysql://127.0.0.1:3306/dbup?characterEncoding=UTF-8" /> <property name="db.username" value="root" /> <property name="db.password" value="1234" /> <path id="classpath"> <fileset dir="${basedir}/libs/"> <include name="*.jar" /> </fileset> </path> <taskdef name="dbunit" classname="org.dbunit.ant.DbUnitTask" classpathref="classpath" /> <!-- 导出所有数据到xml文件--> <target name="export-all"> <dbunit driver="${db.driver}" url="${db.url}" userid="${db.username}" password="${db.password}" supportBatchStatement="true"> <export format="xml" dest="data/all-data.xml" /> </dbunit> </target> <!-- 导出查询结果和表数据到xml文件--> <target name="export-table-student"> <dbunit driver="${db.driver}" url="${db.url}" userid="${db.username}" password="${db.password}" supportBatchStatement="true"> <export format="xml" dest="data/export-student.xml"> <query name="student" sql="SELECT id, name, sex, birthday FROM STUDENT WHERE id=1" /> <table name="user" /> </export> </dbunit> </target> <!-- 比对数据库中的数据与data/init-data.xml文件中的数据 --> <target name="compare"> <dbunit driver="${db.driver}" url="${db.url}" userid="${db.username}" password="${db.password}" supportBatchStatement="true"> <compare format="xml" src="data/init-data.xml" /> </dbunit> </target> <!-- 导入data/all-data.xml文件中的数据到数据库中 --> <target name="import-all"> <dbunit driver="${db.driver}" url="${db.url}" userid="${db.username}" password="${db.password}" supportBatchStatement="true"> <operation format="xml" type="CLEAN_INSERT" src="data/all-data.xml" /> </dbunit> </target> </project>
数据库脚本
dbup.sql
/* Navicat MySQL Data Transfer Source Server : localhost Source Server Version : 50525 Source Host : localhost:3306 Source Database : dbup Target Server Type : MYSQL Target Server Version : 50525 File Encoding : 65001 Date: 2014-10-11 14:27:06 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `role` -- ---------------------------- DROP TABLE IF EXISTS `role`; CREATE TABLE `role` ( `id` varchar(20) NOT NULL DEFAULT '', `roleName` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of role -- ---------------------------- INSERT INTO `role` VALUES ('1', '管理员'); INSERT INTO `role` VALUES ('2', '普通用户'); -- ---------------------------- -- Table structure for `student` -- ---------------------------- DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `id` varchar(20) NOT NULL DEFAULT '', `name` varchar(20) DEFAULT NULL, `sex` varchar(10) DEFAULT NULL, `birthday` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of student -- ---------------------------- INSERT INTO `student` VALUES ('1', '2', '3', '4'); -- ---------------------------- -- Table structure for `user` -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` varchar(20) NOT NULL DEFAULT '', `name` varchar(20) DEFAULT NULL, `role_id` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`), KEY `ref_id` (`role_id`), CONSTRAINT `ref_id` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of user -- ---------------------------- INSERT INTO `user` VALUES ('1', '张三', '1'); INSERT INTO `user` VALUES ('2', '李四', '2');
参考文档
完整源代码
相关推荐
在本文中,我们将深入探讨 DBUnit 的最佳实践,聚焦于数据库的增删改查操作,帮助您优化测试流程,提升软件质量。 1. **数据初始化**: 在开始任何数据库操作之前,DBUnit 提供了 `IDatabaseConnection` 接口来...
在“DBUnit最佳实践”中,作者可能还会讨论如何结合使用DBUnit与其他工具,如Ant或Maven构建工具,以及持续集成服务器如Jenkins,来自动化数据备份和恢复的过程。这样可以节省手动操作的时间,并减少人为错误的可能...
用户可以在自己的测试类中直接或间接调用 DbUnit,或者从 Ant 中使用 DbUnit 来执行某些任务。 DbUnit 的优点是提供了一种相对简单灵活的方式来准备和验证数据库,这种方式独立于被测代码。 DbUnit 还可以与 JUnit ...
2. **junit.jar**:JUnit 是一个流行的单元测试框架,DBUnit 常常与之配合使用,提供对数据库层的测试支持。它提供了断言、测试套件和测试监听器等机制,使得编写和运行测试变得简单。 3. **commons-dbcp.jar** 或 ...
4. `build.xml`:Ant 构建文件,用于构建和打包 DBUnit。 5. `pom.xml`(如果存在):Maven 项目配置文件,用于管理依赖和构建过程。 API 文档(http://www.dbunit.org/apidocs/index.html)是 DBUnit 使用的关键...
DBUnit 是一个 Java 开发工具,专门用于数据库的测试,它与单元测试框架如 JUnit 配合使用,确保在测试前后数据库的状态正确无误。DBUnit 的核心思想是在执行测试之前清空并填充测试数据,然后在测试完成后恢复原始...
通过阅读链接中的博文(https://virgoooos.iteye.com/blog/186859),可以获取更多关于如何在实际项目中使用DBUnit 的具体示例和最佳实践。 总之,DBUnit 是一个强大的工具,为Java开发者提供了一种有效的方法来...
在使用 DBUnit 进行测试时,首先需要引入 dbunit-2.4.7.jar 和其他必要的依赖库,如 JDBC 驱动。接下来,创建一个 `IDatabaseConnection` 实例,该实例代表与数据库的连接。然后,可以使用 `DatabaseConfig` 来配置 ...
DbUnit 是一个针对数据库驱动项目的JUnit扩展,同时也可用于Ant构建工具。它的主要功能是能够将数据库数据导出到XML数据集,并从XML数据集中导入,从而支持数据库的测试和数据管理。DbUnit还允许你验证数据库中的...
4. **数据库连接(Database Connection)**: 在使用 DBUnit 之前,需要配置一个数据库连接。这可以通过 JDBC URL、用户名和密码实现。 ### 使用 DBUnit 的步骤 1. **初始化**: 首先,你需要创建一个 `...
doc 文件夹可能包含了Dbunit的API文档或者其他技术文档,这些文档对于理解和使用Dbunit非常有帮助,它们详细解释了各个类和方法的功能,以及如何在项目中正确使用。 总的来说,Dbunit是一个强大的数据库测试框架,...
标签中的 "源码" 和 "工具" 指示了这个话题不仅涉及实际操作,还可能包括编写自定义代码来集成 DBUnit 到项目中,以及使用 DBUnit 这个工具进行数据库管理。 综上所述,DBUnit 是一个强大的数据库测试工具,通过 ...
DBUnit通过使用XML或Flat CSV格式的数据集来管理这些操作,使得数据库状态的管理变得标准化且可重复。 ### 主要功能 1. **数据导入/导出**:DBUnit可以将数据从数据库导出到XML或CSV文件,也可以将这些文件中的...
本项目"使用EJB+Struts1.3+Ant+Cactus+DbUnit+JMeter+StrutsTest实现测试3"正是针对这一目标进行的实践。下面将详细介绍这些技术及其在测试中的应用。 **EJB(Enterprise JavaBeans)** 是Java平台上的企业级组件...
本项目利用一系列强大的工具,如EJB(Enterprise JavaBeans)、Struts 1.3、Ant构建工具、Cactus测试框架、DbUnit数据库单元测试工具、JMeter性能测试工具以及StrutsTest扩展,来实现一个全面的测试流程。...
DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类...
在本文中,我们将深入探讨如何使用一系列技术和工具,如EJB、Struts1.3、Ant、Cactus、DbUnit、JMeter以及StrutsTest,来实现一个完整的测试流程,针对一个基于Java的企业级应用程序进行全面的测试。这些技术在软件...
在“dbunit-2.2”这个压缩包中,用户将找到DBUnit库的jar文件以及其他必要的文档和资源,用于在项目中集成和使用DBUnit 2.2进行数据库单元测试。通过这个工具,开发者可以确保数据库层的功能正确无误,提高代码质量...