`
CoderDream
  • 浏览: 478443 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

DBUnit最佳实践之使用ant命令

 
阅读更多

在做测试之前,我们需要对数据进行备份,用DBUnit可以很方便的对数据库中的数据进行备份和恢复。

下面我们来看看如何通过ant脚本命令才实现。

 

目录结构

  • 项目结构图
  • 需要用到的jar
  • 运行前准备
  • 运行与结果
  • 源代码
    1. Ant编译文件
    2. 数据库脚本
  • 参考文档
  • 完整项目源代码

项目结构图

 

 

需要用到的jar

  1. commons-logging-1.1.1.jar
  2. dbunit-2.4.8.jar
  3. junit-4.9b2.jar
  4. mysql-connector-java-3.1.12-bin.jar
  5. slf4j-api-1.6.1.jar
  6. slf4j-jcl-1.6.1.jar

运行前准备

  1. 在MySQL的客户端,如Navicat Premium中执行sql文件夹中的dbup.sql文件,创建数据库和表;
  2. 打开Ant面板,eclipse中,Window -> Show View -> Others,然后输入 ant,选ant,然后点【OK】按钮;
  3. 将build.xml拖拽到Ant面板;

运行与结果

  1. 选择Ant面板中的dbunit-ant,点击三角箭头,可以看到不同的target;
  2. 选择export-all:
    执行编译:点击右键,Run As -> Ant Build;
    执行结果:导出所有表的数据至xml文件,存放在data/all-data.xml中;
  3. 选择import-all:
    执行编译:点击右键,Run As -> Ant Build;
    执行结果:导入data/all-data.xml文件中的数据到数据库中;
  4. 选择export-table-student:
    执行编译:点击右键,Run As -> Ant Build;
    执行结果:导出student表的查询结果及user表的全部数据到data/export-student.xml中;
  5. 选择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');

 

 

参考文档

  1. 使用DBUnit进行数据库备份与恢复
  2. 用DBUnit做数据备份恢复工具

完整源代码

  • 大小: 19.4 KB
1
0
分享到:
评论

相关推荐

    DBUnit最佳实践之增删改查

    在本文中,我们将深入探讨 DBUnit 的最佳实践,聚焦于数据库的增删改查操作,帮助您优化测试流程,提升软件质量。 1. **数据初始化**: 在开始任何数据库操作之前,DBUnit 提供了 `IDatabaseConnection` 接口来...

    DBUnit最佳实践之数据备份与恢复

    在“DBUnit最佳实践”中,作者可能还会讨论如何结合使用DBUnit与其他工具,如Ant或Maven构建工具,以及持续集成服务器如Jenkins,来自动化数据备份和恢复的过程。这样可以节省手动操作的时间,并减少人为错误的可能...

    DBUNIT使用

    用户可以在自己的测试类中直接或间接调用 DbUnit,或者从 Ant 中使用 DbUnit 来执行某些任务。 DbUnit 的优点是提供了一种相对简单灵活的方式来准备和验证数据库,这种方式独立于被测代码。 DbUnit 还可以与 JUnit ...

    dbunit使用必需Jar包

    2. **junit.jar**:JUnit 是一个流行的单元测试框架,DBUnit 常常与之配合使用,提供对数据库层的测试支持。它提供了断言、测试套件和测试监听器等机制,使得编写和运行测试变得简单。 3. **commons-dbcp.jar** 或 ...

    dbunit-2.4.9 源码

    4. `build.xml`:Ant 构建文件,用于构建和打包 DBUnit。 5. `pom.xml`(如果存在):Maven 项目配置文件,用于管理依赖和构建过程。 API 文档(http://www.dbunit.org/apidocs/index.html)是 DBUnit 使用的关键...

    DBUnit使用文档

    DBUnit 是一个 Java 开发工具,专门用于数据库的测试,它与单元测试框架如 JUnit 配合使用,确保在测试前后数据库的状态正确无误。DBUnit 的核心思想是在执行测试之前清空并填充测试数据,然后在测试完成后恢复原始...

    DBUnit 进行单元测试

    通过阅读链接中的博文(https://virgoooos.iteye.com/blog/186859),可以获取更多关于如何在实际项目中使用DBUnit 的具体示例和最佳实践。 总之,DBUnit 是一个强大的工具,为Java开发者提供了一种有效的方法来...

    dbunit-2.4.7所有jar以及dbunit入门教程

    在使用 DBUnit 进行测试时,首先需要引入 dbunit-2.4.7.jar 和其他必要的依赖库,如 JDBC 驱动。接下来,创建一个 `IDatabaseConnection` 实例,该实例代表与数据库的连接。然后,可以使用 `DatabaseConfig` 来配置 ...

    介绍dbunit的使用和原理,核心组件介绍

    DbUnit 是一个针对数据库驱动项目的JUnit扩展,同时也可用于Ant构建工具。它的主要功能是能够将数据库数据导出到XML数据集,并从XML数据集中导入,从而支持数据库的测试和数据管理。DbUnit还允许你验证数据库中的...

    dbunit使用实例

    4. **数据库连接(Database Connection)**: 在使用 DBUnit 之前,需要配置一个数据库连接。这可以通过 JDBC URL、用户名和密码实现。 ### 使用 DBUnit 的步骤 1. **初始化**: 首先,你需要创建一个 `...

    Dbunit数据库连接下载

    doc 文件夹可能包含了Dbunit的API文档或者其他技术文档,这些文档对于理解和使用Dbunit非常有帮助,它们详细解释了各个类和方法的功能,以及如何在项目中正确使用。 总的来说,Dbunit是一个强大的数据库测试框架,...

    如何使用DBUnit做数据备份恢复

    标签中的 "源码" 和 "工具" 指示了这个话题不仅涉及实际操作,还可能包括编写自定义代码来集成 DBUnit 到项目中,以及使用 DBUnit 这个工具进行数据库管理。 综上所述,DBUnit 是一个强大的数据库测试工具,通过 ...

    dbunit帮助文档(HTML版)

    DBUnit通过使用XML或Flat CSV格式的数据集来管理这些操作,使得数据库状态的管理变得标准化且可重复。 ### 主要功能 1. **数据导入/导出**:DBUnit可以将数据从数据库导出到XML或CSV文件,也可以将这些文件中的...

    使用EJB+Struts1.3+Ant+Cactus+DbUnit+JMeter+StrutsTest实现测试3

    本项目"使用EJB+Struts1.3+Ant+Cactus+DbUnit+JMeter+StrutsTest实现测试3"正是针对这一目标进行的实践。下面将详细介绍这些技术及其在测试中的应用。 **EJB(Enterprise JavaBeans)** 是Java平台上的企业级组件...

    使用EJB+Struts1.3+Ant+Cactus+DbUnit+JMeter+StrutsTest实现测试2

    本项目利用一系列强大的工具,如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 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类...

    使用EJB+Struts1.3+Ant+Cactus+DbUnit+JMeter+StrutsTest实现测试4

    在本文中,我们将深入探讨如何使用一系列技术和工具,如EJB、Struts1.3、Ant、Cactus、DbUnit、JMeter以及StrutsTest,来实现一个完整的测试流程,针对一个基于Java的企业级应用程序进行全面的测试。这些技术在软件...

    dbunit2.2

    在“dbunit-2.2”这个压缩包中,用户将找到DBUnit库的jar文件以及其他必要的文档和资源,用于在项目中集成和使用DBUnit 2.2进行数据库单元测试。通过这个工具,开发者可以确保数据库层的功能正确无误,提高代码质量...

Global site tag (gtag.js) - Google Analytics