`

使用DbUnit,可以用Ant的任务来实现,也可以直接写DbUnit的测试代码实现

阅读更多

Ant: http://ant.apache.org/

Apache Ant is a Java-based build tool. In theory, it is kind of like Make, but without Make's wrinkles.

DbUnit:http://www.dbunit.org/

DbUnit is a JUnit extension (also usable with Ant) targeted for database-driven projects that, among other things, puts your database into a known state between test runs. This is an excellent way to avoid the myriad of problems that can occur when one test case corrupts the database and causes subsequent tests to fail or exacerbate the damage.

DbUnit has the ability to export and import your database data to and from XML datasets. Since version 2.0, DbUnit can works with very large dataset when use in streaming mode. DbUnit can also helps you to verify that your database data match expected set of values.

JUnitDoclet:http://www.junitdoclet.org/

Why wasn't this tested before? This question often arises shortly before a deadline. Our answer: Because testing was not easy enough.

Especially creating and maintaining a test structure is often used as an excuse. JUnitDoclet lowers the step toward JUnit. It generates skeletons of TestCases based on your application source code. And it supports you to reorganize tests during refactoring. Suddenly all the excuses don't count any longer.

MySQL数据库:Pagination,表:Persioninfo信息如下:

# Host: localhost
# Database: pagination
# Table: 'personinfo'
#
CREATE TABLE `personinfo` (
  `id` varchar(100) NOT NULL default '',
  `name` varchar(50) NOT NULL default '',
  `sex` tinyint(1) NOT NULL default '0',
  `mobile` varchar(50) NOT NULL default '0',
  `address` varchar(50) NOT NULL default '',
  `memo` varchar(50) default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=gb2312;

一、用Ant的任务来实现

  1、DataSelt.xml内容如下:

<!----><dataset><!----><?xml version="1.0" encoding="GBK"?>
<dataset>
 <Personinfo id="9001" name="YuLimin" sex="0" mobile="13800138000" address="中国福建莆田" memo="Ant DBUnit Test"/>
 <Personinfo id="9002" name="俞Limin" sex="1" mobile="13800138000" address="中华人民共和国" memo="Ant DBUnit Test"/>
 <Personinfo id="9003" name="俞黎敏" sex="0" mobile="13800138000" address="中华人民共和国福建" memo="Ant DBUnit Test"/>
</dataset>

  2、Ant 的 build.xml内容如下,请进行相应的改动:

<!----><project name="DbUnitTest" default="DbUnit" basedir="."><!----><?xml version="1.0" encoding="GBK"?>
<project name="DbUnitTest" basedir="." default="initdb">
 <!-- 定义DbUnit需要的包,包括DbUnit包和jdbc包。 -->
 <property name="lib.dir" value="E:\OpenSource"/>
 <property name="dbunit.jar" value="${lib.dir}\DBUnit\dbunit-2.1.jar"/>
 <property name="jdbc.jar" value="${lib.dir}\MySQL\lib\mysql-connector-java-3.1.7-bin.jar"/>
 <property name="junit.jar" value="${lib.dir}\JUnit\junit.jar"/>
 <property name="junitdoclet.jar" value="${lib.dir}\JUnitDoclet\JUnitDoclet.jar"/>
 <property name="classes.dir" value="./classes"/>
 <!-- 在全局属性定义中定义数据库连接的url,driver,userid,password,进行多个操作可以达到重用 -->
 <property name="dburl" value="jdbc:mysql://localhost/Pagination"/>
 <property name="dbdriver" value="com.mysql.jdbc.Driver"/>
 <property name="dbuserid" value="root"/>
 <property name="dbpwd" value="password"/>
 <path id="DbUnit.classpath">
  <pathelement location="${dbunit.jar}"/>
  <pathelement location="${jdbc.jar}"/>
  <pathelement location="${junit.jar}"/>
  <pathelement location="${junitdoclet.jar}"/>
 </path>
 <target name="init">
  <!-- 定义DbUnit的Ant任务类 -->
  <taskdef name="dbunit" classname="org.dbunit.ant.DbUnitTask" classpathref="DbUnit.classpath"/>
 </target>
 <target name="initdb" depends="init">
  <dbunit driver="${dbdriver}" supportBatchStatement="false" url="${dburl}" userid="${dbuserid}" password="${dbpwd}" classpathref="DbUnit.classpath">
   <!-- operation的类型有:UPDATE 、INSERT、DELETE 、DELETE_ALL 、TRUNCATE 、REFRESH(MSSQL_REFRESH)、CLEAN_INSERT(MSSQL_CLEAN_INSERT)、NONE -->
   <!-- (注意:MSSQLServer中在CLEAN_INSERT和REFRESH中要使用后面的MSSQL_REFRESH和MSSQL_CLEAN_INSERT) -->
   <!-- INSERNT仅插入数据 -->
   <!-- CLEAN_INSERT清除并插入数据 -->
   <operation type="INSERT" src="DataSet.xml"/>
  </dbunit>
 </target>
 <target name="export" depends="init">
  <!-- 导出全部包含有数据的表的数据出来 -->
  <dbunit driver="${dbdriver}" supportBatchStatement="false" url="${dburl}" userid="${dbuserid}" password="${dbpwd}" classpathref="DbUnit.classpath">
   <export dest="Export.xml"/>
  </dbunit>
 </target>
 <target name="select" depends="init">
  <!-- 导出一个由查询语句产生的数据集和指定的一个表的数据 -->
  <dbunit driver="${dbdriver}" supportBatchStatement="false" url="${dburl}" userid="${dbuserid}" password="${dbpwd}" classpathref="DbUnit.classpath">
   <export dest="Select.xml">
    <query name="Personinfo" sql="Select * From Personinfo Where name='YuLimin'"/>
    <table name="Personinfo"/>
   </export>
  </dbunit>
 </target>
</project>

3、运行:ant或ant initdb或ant export或ant select不同的任务

二、直接写DbUnit的测试代码实现,DbUnitTest.java的代码如下:

import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;

import org.dbunit.DatabaseTestCase;
import org.dbunit.database.DatabaseConnection;
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSet;
import org.dbunit.operation.DatabaseOperation;

/**
 *

Title: 运行DbUnit测试将数据导入数据库。


 *
 *

Description: 运行DbUnit测试将数据导入数据库。


 *
 *

Copyright: Copyright (c) 2004


 *
 *

Company: Beyond DayBreak Office


 * @author YuLimin
 * @version 1.0
 */
public class DbUnitTest extends DatabaseTestCase
{
    public DbUnitTest(String name)
    {
        super(name);
    }

    /**
     *
     * @see org.dbunit.DatabaseTestCase#getConnection()
     * @throws Exception
     * @return IDatabaseConnection
     */
    protected IDatabaseConnection getConnection() throws Exception
    {
        Class driverClass = Class.forName("com.mysql.jdbc.Driver");
        Connection jdbcConnection = DriverManager.getConnection("jdbc:mysql://localhost/Pagination","root","password");
        return new DatabaseConnection(jdbcConnection);
    }

    /**
     *
     * @see org.dbunit.DatabaseTestCase#getDataSet()
     * @throws Exception
     * @return IDataSet
     */
    protected IDataSet getDataSet() throws Exception
    {
        return new FlatXmlDataSet(new FileInputStream("DataSet.xml"));
    }

    /**
     * getSetUpOperation
     *
     * @return DatabaseOperation
     * @throws Exception
     */
    protected DatabaseOperation getSetUpOperation() throws Exception
    {
        return DatabaseOperation.REFRESH;
    }

    /**
     * getTearDownOperation
     *
     * @return DatabaseOperation
     * @throws Exception
     */
    protected DatabaseOperation getTearDownOperation() throws Exception
    {
        return DatabaseOperation.NONE;
    }

    /**
     * 运行DbUnit测试将数据导入数据库。
     */
    public void testDbUnit()
    {
        System.out.println("DbUnit Testing...");
    }
}

分享到:
评论

相关推荐

    DBUNIT使用

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

    DBUnit最佳实践之使用ant命令

    DBUnit 是一个 Java 开发者常用的数据库测试工具,它与JUnit等测试框架配合,能够帮助开发者在测试...通过以上实践,我们可以高效地利用DBUnit与Ant集成,实现数据库的自动化测试和管理,提升项目的测试效率和质量。

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

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

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

    本项目利用一系列强大的工具,如EJB(Enterprise JavaBeans)、Struts 1.3、Ant构建工具、Cactus测试框架、DbUnit数据库单元测试工具、JMeter性能测试工具以及StrutsTest扩展,来实现一个全面的测试流程。...

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

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

    通向架构师的道路(第二十五天)SSH的单元测试与dbunit的整合.docx

    例如,我们可以使用DbUnit来测试DAO层的代码,并使用JUnit来测试SSH连接和文件传输等功能。通过将DbUnit和JUnit整合到SSH项目中,我们可以确保代码的正确性和可靠性。 单元测试的重要性 单元测试是软件开发过程中...

    dbunit-2.4.9 源码

    - 测试驱动开发(TDD):在编写业务代码之前,先用 DBUnit 编写测试用例,确保数据库操作的正确性。 - 集成测试:验证多个模块或服务之间的交互,确保数据库交互没有问题。 - 回归测试:每次代码更新后,通过 DBUnit...

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

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

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

    DbUnit提供了一些实现来处理不同格式的数据集,如 `FlatXmlDataSet`,它可以读写扁平化的XML数据集,其中每个XML元素对应一个表行,元素名称对应表名,XML属性对应列名。另一个实现是 `DatabaseDataSetAdapter`,它...

    DBUnit使用文档

    总的来说,DBUnit 是一个强大的数据库测试工具,通过 Ant 脚本与数据库进行交互,确保测试环境的一致性和可靠性。通过使用不同的操作类型,可以灵活地管理数据库中的数据,以便在测试前后保持预期的状态。在实际项目...

    通向架构师的道路(第二十五天)SSH的单元测试与dbunit的整合的例子

    dbunit可以通过Ant或Maven任务集成到构建流程中。在`build.xml`或`pom.xml`中配置相应的目标,比如`&lt;import&gt;`元素引入dbunit相关的任务,`&lt;sql&gt;`元素执行SQL脚本初始化数据库,`&lt;dbunit&gt;`元素执行dbunit操作。 在`...

    DBUnit_Project_Study.rar

    9. **与持续集成工具集成**:DBUnit可以很容易地集成到Maven、Ant或其他持续集成系统中,实现自动化测试。 在“DBUnit数据库测试资料.rar”中,可能包含的是DBUnit的使用指南、示例代码和最佳实践。而“dbunit_test...

    dbunit-2.2.3.jar

    DbUnit is a JUnit extension (also usable with Ant) targeted for database-driven projects that, among other things, puts your database into a known state between test runs. This is an excellent way to ...

    让开发自动化:持续测试

    本文将介绍如何使用Ant进行JUnit测试,结合DbUnit执行组件测试,利用JUnitPerf分析性能瓶颈,以及运用Selenium进行Web功能测试,同时还将展示如何借助Cobertura计算代码覆盖率和CruiseControl实现持续集成。...

    dbunit 2.4.4, jar包及源码

    DbUnit is a JUnit extension (also usable with Ant) targeted at database-driven projects that, among other things, puts your database into a known state between test runs. This is an excellent way to ...

    dbunit-2.5.3.jar

    dbUnit是一个JUnit扩展(也可以从Ant和Maven中使用),用于数据库驱动的项目,除其他事项外,它使您的数据库在两次测试运行之间进入已知状态。 这是避免一个测试用例破坏数据库并导致后续测试失败或加剧损坏的无数...

    dbunit-2.5.2.jar

    dbUnit是一个JUnit扩展(也可以从Ant和Maven中使用),用于数据库驱动的项目,除其他事项外,它使您的数据库在两次测试运行之间进入已知状态。 这是避免一个测试用例破坏数据库并导致后续测试失败或加剧损坏的无数...

    dbunit-2.5.0.jar

    dbUnit是一个JUnit扩展(也可以从Ant和Maven中使用),用于数据库驱动的项目,除其他事项外,它使您的数据库在两次测试运行之间进入已知状态。 这是避免一个测试用例破坏数据库并导致后续测试失败或加剧损坏的无数...

    dbunit-2.5.1.jar

    dbUnit是一个JUnit扩展(也可以从Ant和Maven中使用),用于数据库驱动的项目,除其他事项外,它使您的数据库在两次测试运行之间进入已知状态。 这是避免一个测试用例破坏数据库并导致后续测试失败或加剧损坏的无数...

    dbunit-2.3.0.jar

    dbUnit是一个JUnit扩展(也可以从Ant和Maven中使用),用于数据库驱动的项目,除其他事项外,它使您的数据库在两次测试运行之间进入已知状态。 这是避免一个测试用例破坏数据库并导致后续测试失败或加剧损坏的无数...

Global site tag (gtag.js) - Google Analytics