91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

DBUnit使用案例

發布時間:2020-07-09 23:49:48 來源:網絡 閱讀:934 作者:lj5635906 欄目:數據庫

1 . 概念

DbUnit是為數據庫驅動的項目提供的一個對JUnit 的擴展,除了提供一些常用功能,它可以將你的數據庫置于一個測試輪回之間的狀態。

2 . Maven集成DBUnit

2.1 導包

           <!-- dbunit -->
         <dependency>
              <groupId>org.dbunit</groupId>
              <artifactId>dbunit</artifactId>
              <version>2.5.0</version>
         </dependency>
         <!-- logback-->
         <dependency>
              <groupId>ch.qos.logback</groupId>
              <artifactId>logback-access</artifactId>
              <version>1.1.3</version>
         </dependency>
         <dependency>
              <groupId>ch.qos.logback</groupId>
              <artifactId>logback-classic</artifactId>
              <version>1.1.3</version>
         </dependency>
         <!-- 數據庫驅動 -->
         <dependency>
              <groupId>mysql</groupId>
              <artifactId>mysql-connector-java</artifactId>
              <version>5.1.37</version>
         </dependency>

2.2 創建數據文件夾

DBUnit使用案例

1)創建dbunit文件夾。存放dbunit所有數據信息

2)在dbunit文件夾下創建backup文件夾。存放數據庫備份數據文件

3)創建test文件夾。存放所有測試數據文件

2.3 代碼整理

2.3.1 DBUnitBase基類

DBUnit說明:

1)設置數據庫連接信息

2)設置數據庫數據備份路徑

3)設置測試數據文件路徑

4)數據備份方法和數據恢復方法

package com.zzwx.test.dbunit.base;
 
import java.io.File;
import java.io.FileWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;
 
import org.dbunit.database.DatabaseConnection;
import org.dbunit.database.DatabaseDataSet;
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.database.QueryDataSet;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSet;
import org.dbunit.operation.DatabaseOperation;
 
/**
 * @author Roger
 * @desc DBUnit基類
 */
publicabstractclass DBUnitBase {
 
     /**
      * JDBC數據庫連接
      */
     protected Connection conn = null;
 
     /**
      * DBUnit數據庫連接
      */
     protected IDatabaseConnection connection = null;
 
     /**
      * 備份數據目錄
      */
     protected String backupDataPath = "src/test/resources/dbunit/backup/";
 
     /**
      * 測試數據文件目錄
      */
     protected String testDataPath = "src/test/resources/dbunit/test/";
 
     /**
      * 數據備份文件
      */
     protected File file = null;
 
     /**
      * 所有備份文件
      */
     protected List<File> files = null;
 
     /**
      * 獲取數據庫連接
      * 
      * @returnjava.sql.Connection
      * @throws Exception
      */
     protected Connection getConnection() throws Exception {
         Class.forName("com.mysql.jdbc.Driver");
         // 連接DB
         Connectionconn = DriverManager
                   .getConnection(
                            "jdbc:mysql://localhost:3306/zzwx?useUnicode=true&characterEncoding=UTF-8",
                            "root", "123456");
         returnconn;
     }
 
     /**
      * 通過表名備份數據
      * 
      * @param tableName
      *           表名
      * @param backupFileName
      *           備份文件名
      * @throws Exception
      */
     protectedvoid backupData(String tableName, String backupFileName)
              throws Exception {
         try {
              conn =getConnection();
              connection = new DatabaseConnection(conn);
              if (null != tableName && !"".equals(tableName)) {
                   // 通過表名備份單張表單數據
                   QueryDataSetbackupDataSet = new QueryDataSet(connection);
                   backupDataSet.addTable(tableName);
                   // 設置備份文件路徑
                   file = new File(backupDataPath + backupFileName);
                   FlatXmlDataSet.write(backupDataSet, new FileWriter(file),
                            "UTF-8");
              }else {
                   // 備份數據庫所有數據
                   IDataSetbackupDataSet = new DatabaseDataSet(connection, true);
                   // 設置備份文件路徑
                   file = new File(backupDataPath + backupFileName);
                   FlatXmlDataSet.write(backupDataSet, new FileWriter(file),
                            "UTF-8");
              }
         }catch (Exception e) {
              e.printStackTrace();
         }finally {
              closeCon();
         }
     }
 
     /**
      * 通過xml文件恢復數據
      * 
      * @param fileName
      *           路徑+文件名
      */
     @SuppressWarnings("deprecation")
     publicvoid recoverData(File file) {
         try {
              conn =getConnection();
              connection = new DatabaseConnection(conn);
              IDataSetdataSet = new FlatXmlDataSet(file);
              DatabaseOperation.CLEAN_INSERT.execute(connection, dataSet);
         }catch (Exception e) {
              e.printStackTrace();
         }finally {
              closeCon();
         }
     }
 
     /**
      * 關閉連接
      */
     protectedvoid closeCon() {
         try {
              if (connection != null) {
                   connection.close();
              }
              if (conn != null) {
                   conn.close();
              }
         }catch (SQLException e) {
              e.printStackTrace();
         }
     }
 
}

2.3.2 DBUnitAll

DBUnitAll說明:

1)繼承DBUnitBase基類

2)添加測試數據,并將測試前數據備份到src/test/resources/dbunit/backup/all_data_back.xml

3)備份數據庫所有數據方法、恢復數據庫數據方法

4)使用該類時,setUpBackupAll(fileName)recoverAllData()方法需要成對調用。不然數據庫數據不會恢復到測試之前的數據。

package com.zzwx.test.dbunit;
 
import java.io.FileInputStream;
import java.sql.Connection;
 
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;
 
import com.zzwx.test.dbunit.base.DBUnitBase;
 
/**
 * @author Roger
 * @desc備份所有數據庫所有數據在一個備份文件中
 */
publicclass DBUnitAll extends DBUnitBase {
 
     /**
      * 添加測試數據,并備份數據庫所有數據在 src/test/resources/dbunit/backup/all_data_back.xml
      * 
      * @param fileName
      *           測試數據文件
      */
     @SuppressWarnings("deprecation")
     publicvoid setUpBackupAll(String fileName) {
         // JDBC數據庫連接
         Connectionconn = null;
         // DBUnit數據庫連接
         IDatabaseConnectionconnection = null;
         try {
              conn =getConnection();
              // 獲得DB連接
              connection = new DatabaseConnection(conn);
              // 備份數據庫測試之前的數據
              backupAll();
              // 準備數據的讀入
              IDataSetdataSet = new FlatXmlDataSet(new FileInputStream(
                       testDataPath + fileName));
              connection.createDataSet(new String[] {});
              DatabaseOperation.CLEAN_INSERT.execute(connection, dataSet);
         }catch (Exception e) {
              e.printStackTrace();
         }finally {
              closeCon();
         }
     }
 
     /**
      * 備份數據庫所有數據
      */
     publicvoid backupAll() {
         try {
              super.backupData(null, "all_data_back.xml");
         }catch (Exception e) {
              e.printStackTrace();
         }
     }
 
     /**
      * 還原數據庫到測試之前
      */
     publicvoid recoverAllData() {
          super.recoverData(file);
     }
}

2.3.3 DBUnitEach

DBUnitEach說明

1) 繼承DBUnitBase基類

2) 添加測試數據,并備份需要備份數據表的數據,通過表名備份數據,每張表對于一個備份數據文件

setUpBackupEach()recoverBackupEach()需要成對出現。不然數據庫數據不會恢復到測試之前的數據。

package com.zzwx.test.dbunit;
 
import java.io.File;
import java.io.FileInputStream;
import java.sql.Connection;
import java.util.ArrayList;
 
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;
 
import com.zzwx.test.dbunit.base.DBUnitBase;
 
/**
 * @author Roger
 * @desc添加測試數據并備份需要備份的表,每張表對應一個xml備份文件
 */
publicclass DBUnitEach extends DBUnitBase {
 
     /**
      * 添加測試數據并備份數據
      * 
      * @param fileName
      *           文件名
      * @param tableNames
      *           需要備份的表名集合
      */
     @SuppressWarnings("deprecation")
     publicvoid setUpBackupEach(String fileName, String... tableNames) {
         // JDBC數據庫連接
         Connectionconn = null;
         // DBUnit數據庫連接
         IDatabaseConnectionconnection = null;
         try {
              conn =getConnection();
              // 獲得DB連接
              connection = new DatabaseConnection(conn);
              // 備份數據庫測試之前的數據
              backupDataEach(tableNames);
              // 準備數據的讀入
              IDataSetdataSet = new FlatXmlDataSet(new FileInputStream(
                       testDataPath + fileName));
              connection.createDataSet(new String[] {});
              DatabaseOperation.CLEAN_INSERT.execute(connection, dataSet);
         }catch (Exception e) {
              e.printStackTrace();
         }finally {
              closeCon();
         }
     }
 
     /**
      * 通過表名備份數據(每張表一個備份文件)
      * 
      * @param tableNames
      *           表名集合
      * @throws Exception
      */
     publicvoid backupDataEach(String... tableNames) throws Exception {
         try {
              if (tableNames != null && tableNames.length > 0) {
                   files = new ArrayList<File>();
                   for (String tableName : tableNames) {
                       super.backupData(tableName, tableName + "_back.xml");
                       files.add(file);
                   }
              }
         }catch (Exception e) {
              e.printStackTrace();
         }finally {
              closeCon();
         }
     }
 
     /**
      * 還原備份的數據
      */
     publicvoid recoverBackupEach() {
         if (null != files && files.size() > 0) {
              for (File file : files) {
                   super.recoverData(file);
              }
         }
     }
}

2.3.4 DBUnitEachAll

DBUnitEachAll說明:

1) 繼承DBUnitBase基類

2) 添加測試數據,并備份所有要備份數據表的所有數據到一個備份文件中each_all_data_back.xml

3) setUpBackupEachAll()recoverBackupEachAll()方法成對出現。不然數據庫數據不會恢復到測試之前的數據。

package com.zzwx.test.dbunit;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.sql.Connection;
 
import org.dbunit.database.DatabaseConnection;
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.database.QueryDataSet;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSet;
import org.dbunit.operation.DatabaseOperation;
 
import com.zzwx.test.dbunit.base.DBUnitBase;
 
/**
 * @author Roger
 * @desc添加測試數據并備份測試前數據庫所有數據到一個備份文件中
 */
publicclass DBUnitEachAll extends DBUnitBase {
 
     /**
      * 添加測試數據并備份數據
      * 
      * @param fileName
      *           文件名
      * @param tableNames
      *           表名集合
      */
     @SuppressWarnings("deprecation")
     publicvoid setUpBackupEachAll(String fileName, String... tableNames) {
         // JDBC數據庫連接
         Connectionconn = null;
         // DBUnit數據庫連接
         IDatabaseConnectionconnection = null;
         try {
              conn =getConnection();
              // 獲得DB連接
              connection = new DatabaseConnection(conn);
              // 備份數據庫測試之前的數據
              backupDataEachAll(tableNames);
              // 準備數據的讀入
              IDataSetdataSet = new FlatXmlDataSet(new FileInputStream(
                       testDataPath + fileName));
              connection.createDataSet(new String[] {});
              DatabaseOperation.CLEAN_INSERT.execute(connection, dataSet);
         }catch (Exception e) {
              e.printStackTrace();
         }finally {
              closeCon();
         }
     }
 
     /**
      * 通過表名將數據庫中的數據備份到一個xml備份文件中
      * 
      * @param tableNames
      *           表名集合
      * @throws Exception
      */
     publicvoid backupDataEachAll(String... tableNames) throws Exception {
         try {
              conn =getConnection();
              // 獲得DB連接
              connection = new DatabaseConnection(conn);
              
              QueryDataSetbackupDataSet = new QueryDataSet(connection);
 
              if (null != tableNames && tableNames.length > 0) {
                   for (String tableName : tableNames) {
                       backupDataSet.addTable(tableName);
                   }
              }
              // 設置備份文件路徑
              file = new File(backupDataPath + "each_all_data_back.xml");
              FlatXmlDataSet.write(backupDataSet, new FileWriter(file), "UTF-8");
         }catch (Exception e) {
              e.printStackTrace();
         }finally {
              closeCon();
         }
     }
 
     /**
      * 還原備份的數據
      */
     publicvoid recoverBackupEachAll(){
         if(null != file){
              super.recoverData(file);
         }
     }
 
}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

太湖县| 囊谦县| 沈丘县| 台南县| 定边县| 三亚市| 万年县| 文登市| 巨鹿县| 渝中区| 泰兴市| 通海县| 河北省| 金门县| 宣汉县| 阜城县| 陇川县| 阿合奇县| 安徽省| 共和县| 淮北市| 仙居县| 彭泽县| 岱山县| 尚志市| 明水县| 安图县| 桃园市| 饶平县| 中方县| 阆中市| 宁波市| 祥云县| 思南县| 大余县| 台东县| 宾阳县| 定襄县| 项城市| 黄陵县| 通化县|