一、用Ant的任務來實現
1、DataSelt.xml內容如下:
<?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內容如下,請進行相應的改動:
<?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;
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...");
??? }
}