TestDBConnection父类 所有test类继承该类
package test.sample.service.util;
import java.io.FileInputStream;
import java.io.FileOutputStream;
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;
/**
* DbUnit 可以有不同的数据库操作,我使用了其中的两种:
*DELETE_ALL ,它删除表中所有行。
*CLEAN_INSERT ,它删除表中所有行并插入数据集提供的行。
*This method inserts the contents of a FlatXmlDataSet file
*into the connection
* @author donganlei
*
*/
public class TestDBConnection extends DatabaseTestCase {
private IDatabaseConnection conn;
private String driverName = "oracle.jdbc.OracleDriver";
private String dburl = "jdbc:oracle:thin:@192.168.0.2:1521:PORTAL";
private String username = "portal";
private String pwd = "portal";
private String schema = "PORTAL";
private String xmlUrl = "e:\\test.xml";//从数据库中取值到XML中(路径)
private String dbxmlurl = "e:\\test.xml";//从XML中还原数据库中的记录(路径)
/**
* 初始化TestDBConnection
*
*/
public TestDBConnection() {
try {
Class.forName(driverName);
Connection jdbcConnection = DriverManager.getConnection(dburl,
username, pwd);
conn = new DatabaseConnection(jdbcConnection, schema);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 建立连接
* 返回IDatabaseConnection
*/
public synchronized IDatabaseConnection getConnection() throws Exception {
Class.forName(driverName);
Connection jdbcConnection = DriverManager.getConnection(dburl,
username, pwd);
conn = new DatabaseConnection(jdbcConnection, schema);
return conn;
}
/**
* 方法:它删除表中所有行并插入数据集提供的行
* @throws Exception
*/
protected void insertFileIntoDb() throws Exception
{
DatabaseOperation.CLEAN_INSERT.execute(getConnection(), getDataSet());
}
/**
* 方法:删除数据库中的所有数据
* @throws Exception
*/
protected void deleteFileDb()throws Exception{
DatabaseOperation.DELETE_ALL.execute(conn, getDataSet());
}
/**
* 方法 :从XML中读取数据
*/
protected IDataSet getDataSet() throws Exception {
return new FlatXmlDataSet(new FileInputStream(dbxmlurl));
}
/**
* 方法:读取数据库中的内容到xmlUrl中
* @param tableNames
* @throws Exception
*/
public void backUp(String[] tableNames) throws Exception {
IDataSet fullDataSet = conn.createDataSet(tableNames);
FlatXmlDataSet.write(fullDataSet, new FileOutputStream(xmlUrl));
}
/**
* 方法:还原数据库中的数据
*
*/
public void overRead() {
}
/**
* 方法关闭连接
* @throws Exception
*/
public void closeConn()throws Exception{
conn.close();
}
}
Test类
package test.sample.service.manage;
import java.util.List;
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.ITable;
import pub.tools.PageList;
import test.sample.service.util.TestDBConnection;
import com.huawei.service.manage.WordManage;
import com.huawei.service.object.LeaveWordObject;
/**
* insertFileIntoDb(): Inserts a file in the database
emptyTable(): Cleans a database table
insertAllFilesIntoDb(): Inserts all the files for your project
emptyAllTables(): Cleans all the tables for your project
* @author donganlei
*
*/
public class WordManageTest extends TestDBConnection {
private IDataSet expectedDataSet;//XML中数据源设置
private ITable expectedTable;//XML中的数据
private IDataSet databaseDataSet;//数据库中的数据源设置
private ITable actualTable;//数据库中的数据
LeaveWordObject word;
String[] args={"ser_leaveword"};//所有要操作的表
private IDatabaseConnection conn;
public WordManageTest()throws Exception{
conn=this.getConnection();
this.backUp(args);//得到数据
expectedDataSet = getDataSet();
expectedTable = expectedDataSet.getTable("ser_leaveword");
databaseDataSet = getConnection().createDataSet();
actualTable = databaseDataSet.getTable("ser_leaveword");
}
/**
* 测 getList 方法
* @throws Exception
*/
public void testGetWordList()throws Exception {
PageList pagination=new PageList();
WordManage wm=new WordManage();
List list=wm.getWordList(1, pagination);
String result=((LeaveWordObject)list.get(0)).getWordtitle();
assertEquals("testGetWordList",expectedTable.getValue(15, "WORDTITLE"),actualTable.getValue(15, "WORDTITLE"));
assertEquals("testGetWordList",expectedTable.getValue(15, "WORDTITLE"),result);
}
/**
* 测试Insert方法
* @throws Exception
*/
public void testInsertWord()throws Exception{
WordManage wm=new WordManage();
word=new LeaveWordObject();
word.setClientid("1");
word.setLeaveword("测试方法");
word.setLeavetime("2008-01-01 11:11:11");
word.setFlag("0");
word.setAnswerman("3");
word.setWordtitle("标题测试");
wm.insertWord(word);
conn=this.getConnection();
this.backUp(args);
assertEquals("testGetWordList",expectedTable.getValue(16, "WORDTITLE"),actualTable.getValue(16, "WORDTITLE"));
assertEquals("testGetWordList",expectedTable.getValue(16, "WORDTITLE"),"标题测试");
}
/**
* 测试根据ID查找留言对象
* @throws Exception
*/
public void testGetWordById()throws Exception{
WordManage wm=new WordManage();
conn=this.getConnection();
this.backUp(args);
assertEquals("testGetWordList",expectedTable.getValue(16, "WORDTITLE"),actualTable.getValue(16, "WORDTITLE"));
assertEquals("testGetWordList",expectedTable.getValue(16, "WORDTITLE"), wm.getWordById(180).getWordtitle());
}
/**
* 根据用户ID和时间查询 测试用户留言列表
* @throws Exception
*/
public void testGetUserListByTime()throws Exception{
WordManage wm=new WordManage();
PageList pagination=new PageList();
conn=this.getConnection();
this.backUp(args);
List list=wm.getUserListByTime(1, "2008-01-01 11:11:11", "2008-04-04 11:11:11", pagination);
String result=((LeaveWordObject)list.get(0)).getWordtitle();
assertEquals("testGetWordList",expectedTable.getValue(2, "WORDTITLE"),actualTable.getValue(2, "WORDTITLE"));
assertEquals("testGetWordList",expectedTable.getValue(2, "WORDTITLE"),result);
}
/**
* 根据坐席ID和时间查询 测试用户留言列表
* @throws Exception
*/
public void testGetSeatListByTime()throws Exception{
WordManage wm=new WordManage();
PageList pagination=new PageList();
conn=this.getConnection();
this.backUp(args);
List list=wm.getSeatListByTime(3, "2008-01-01 11:11:11", "2008-04-04 11:11:11", pagination);
String result=((LeaveWordObject)list.get(0)).getWordtitle();
assertEquals("testGetWordList",expectedTable.getValue(8, "WORDTITLE"),actualTable.getValue(8, "WORDTITLE"));
assertEquals("testGetWordList",expectedTable.getValue(8, "WORDTITLE"),result);
}
/**
* 测试用户回复留言
* @throws Exception
*/
public void testUpdateWord()throws Exception{
WordManage wm=new WordManage();
word=new LeaveWordObject();
word.setId("1");
word.setClientid("1");
word.setLeaveword("测试方法");
word.setLeavetime("2008-01-01 11:11:11");
word.setFlag("0");
word.setAnswerman("3");
word.setWordtitle("标题测试");
word.setAnswercontent("测试回复");
wm.updateWord(word);
conn=this.getConnection();
this.backUp(args);
assertEquals("testGetWordList",expectedTable.getValue(0, "ANSWERCONTENT"),actualTable.getValue(0, "ANSWERCONTENT"));
assertEquals("testGetWordList",expectedTable.getValue(0, "ANSWERCONTENT"),"测试回复");
}
public static void main(String[] args){
junit.textui.TestRunner.run(WordManageTest.class);
}
}
分享到:
- 2008-04-07 11:09
- 浏览 1269
- 评论(0)
- 论坛回复 / 浏览 (0 / 2693)
- 查看更多
相关推荐
在Spring框架中,进行Dao层的集成单元测试时,常常会结合Dbunit工具来实现数据库相关的测试。Dbunit是一款强大的Java库,它扩展了JUnit,为数据库提供了结构化数据的导入和导出,使得测试更加方便和可靠。下面将详细...
DBUnit 是一个强大的Java库,专门用于数据库的单元测试。它与JUnit紧密集成,使得开发者能够在执行单元测试时,能够方便地控制和验证数据库的状态。DBUnit 的核心理念是通过导入和导出数据来帮助测试数据库驱动的...
DbUnit是一款开源的数据库功能测试框架,使用它可以对数据库的基本操作进行白盒...文章针对此种情况,介绍了如何基于DbUnit设计一个数据库单元测试框架,使用Excel文件提供测试数据,从而提高数据库单元测试的工作效率。
在单元测试中,特别是当测试对象涉及到数据库操作,如 DAO(Data Access Object)时,DbUnit 提供了一种优雅的解决方案,能够初始化和清理数据库,确保测试的准确性。 在本文中,我们看到一个使用 DbUnit 进行 ...
Dbunit是一个基于Java的数据库单元测试工具,它可以帮助开发者快速地编写数据库单元测试代码。Dbunit支持多种数据库管理系统,如MySQL、Oracle、DB2等。 四、Dbunit配置文件 在使用dbunit之前,需要在pom.xml文件...
DbUnit 是一个专门为Java开发人员设计的开源工具,主要用于数据库系统的单元测试。它与JUnit紧密集成,使得在执行单元测试时能够对数据库的状态进行精确控制,确保测试的可重复性和可靠性。DbUnit 2.2.3 版本是这个...
DbUnit是一个基于JUnit的数据库测试框架,它可以帮助我们测试数据库相关的代码。使用DbUnit,我们可以模拟数据库数据,并测试数据库相关的代码。例如,我们可以使用DbUnit来测试DAO层的代码,确保其能够正确地读取和...
unitils整合dbunit利用excel进行单元测试 包含mock以及整合spring进行测试
`Junit` 和 `dbunit` 是两个非常重要的工具,它们分别针对Java应用程序的单元测试和数据库测试提供支持。让我们详细了解一下这两个库以及如何将它们结合使用。 `Junit` 是一个流行的开源Java单元测试框架,由Ernst ...
DbUnit则是一个专门用于数据库单元测试的工具,它允许开发者在测试前后对数据库的状态进行操作,如填充测试数据、清理数据等,以保证每次测试都在一致的环境中进行。 首先,了解JUnit4的基础知识至关重要。JUnit4...
DBUnit 是一个强大的开源工具,专门用于数据库的单元测试,它是JUnit框架的一个扩展,使得开发者在进行测试时能够更有效地管理和控制数据库的状态。这个工具的主要目的是确保测试的隔离性和可重复性,使得每次测试都...
DBUNIT 是一个开源的 Java 库,专门用于数据库测试,它提供了一种结构化的方法来设置和验证数据库的状态。在软件开发中,测试是保证代码质量和功能正确性的重要环节,而 DBUNIT 尤其适用于对数据库操作进行测试,...
对于 iBATIS SqlMap 的 DAO 单元测试,DbUnit 也提供了支持。你可以为 SQL 查询、插入、更新和删除等操作创建相应的测试数据,然后在测试用例中调用这些 SQL,通过 DbUnit 检查操作前后的数据库状态变化,确保 SQL ...
DBUnit与H2内存数据库结合是进行单元测试的一种高效方法,尤其在开发Java应用程序时,它可以帮助开发者确保数据层的功能正确性。这篇文章将详细介绍如何利用DBUnit和H2内存数据库来构建单元测试环境。 首先,DBUnit...
这里提到的四个文件是Java开发中常用的单元测试框架和库,分别是JUnit、DBUnit、Unitils和Mockito。让我们逐一深入探讨它们的功能和使用方法。 **JUnit** 是Java领域中最广泛使用的单元测试框架,这里的`junit-4.11...
### 单元测试的重要性及实施方法 #### 一、为何过去我们忽略了单元测试? 1. **缺乏编写单元测试的知识**:很多开发者对于如何编写有效的单元测试并不熟悉,这导致他们在项目开发过程中没有考虑加入单元测试。 2. ...
6. **编写测试**:在测试方法中,使用Spring的`@Autowired`注解注入需要测试的服务或DAO,然后调用其方法进行验证。结合DBUnit,可以确保测试前后数据库状态的一致性。 7. **异常处理和断言**:根据业务需求,使用...