在做测试之前,我们需要对数据进行备份,用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');
参考文档
完整源代码
相关推荐
NULL 博文链接:https://coderdream.iteye.com/blog/2142973
NULL 博文链接:https://coderdream.iteye.com/blog/2142583
DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类...
文档是关于DBUnit的ant的使用文档,通俗易懂
DBUNIT使用的详细文档
dbunit使用必需Jar包,总共4个必需Jar包
介绍了DBUNIT最新版的使用方法。并给出了一个详细的例子
介绍dbunit的使用和原理,核心组件介绍
通过Ant Cactus DbUnit StrutsTest测试组件对一个简单应用程序进行全面的测试
通过Ant Cactus DbUnit StrutsTest测试组件对一个简单应用程序进行全面的测试
通过Ant Cactus DbUnit StrutsTest测试组件对一个简单应用程序进行全面的测试
用dbunit的两个例子,很不错,有帮助
最新的最全的dbunit jar包以及入门教程
dbunit-2.4.9 源码 http://www.dbunit.org/apidocs/index.html 代码 API
dbunit开发文档,供需要用dbunit进行开发的人使用
dbunit的jar包,版本2.2
dbunit入门实例 dbunit入门实例 dbunit入门实例 dbunit入门实例
Junit,dbunit单元测试jar包
Dbunit 基本原理就是在跑测试用例运行之前对数据表做用户定义的操作,清空不想要的数据,插入用户自定义的数据,使得该数据表处于用户知道的一种状态。而用户自定义的数据使用项目里的一个 xml 文件来表示。 Xml ...