DBUnit实例 SC测试总结(二)--数据库测试DBunitDemo

测试结构如下:
1 定义测试数据
2 将测试数据导入到数据库中
3 将预期结果和实际结果进行对比

目的:
测试selectAllDemo方法,检测查询结果是否有效

使用DBuint框架完成测试
返回测试用的数据库连接对象
protected abstract IDatabaseConnection getConnection() throws Exception;
返回测试用XML数据集对象
protected abstract IDataSet getDataSet() throws Exception;

部分参考csdn文章

package baor.src.dbunit;

import java.sql.ResultSet;
import java.sql.SQLException;
import baor.test.sql.ConnPropInfo;
import baor.test.sql.ConnUtil;
import java.sql.Statement;

public interface CRUDDemo {
public abstract ResultSet selectAllDemo(Statement stmt, String SQLString)
throws SQLException;
public abstract Statement setSTMT(ConnUtil connUtil, ConnPropInfo demo)
throws SQLException;
}



package baor.src.dbunit;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import baor.test.sql.ConnPropInfo;
import baor.test.sql.ConnUtil;

public class SelectAllDemo implements CRUDDemo {

@Override
public ResultSet selectAllDemo(Statement stmt, String SQLString)
throws SQLException {
// TODO Auto-generated method stub
// 创建数据集对象
ResultSet rs = stmt.executeQuery(SQLString);
// System.out.println("TestNo" + "\t" + "Description" + "\t" +
// "Author");
return rs;
}

@Override
public Statement setSTMT(ConnUtil connUtil, ConnPropInfo demo)
throws SQLException {
// TODO Auto-generated method stub
// 创建stmt对象
Statement stmt = connUtil.getConnection(demo).createStatement();
return stmt;
}

}



package baor.test.sql;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnUtil {
Connection connection = null;

public Connection getConnection(ConnPropInfo prop) {
if (connection == null) {
try {
// 调用Class.forName()方法加载驱动程序
Class.forName(prop.getDriver());
System.out.println("成功加载MySQL驱动!");
connection = DriverManager.getConnection(prop.getUrl(),
prop.getUser(), prop.getPwd());
System.out.print("成功连接到数据库!");
} catch (ClassNotFoundException e1) {
System.out.println("找不到MySQL驱动!");
e1.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return connection;

}

public void closeConnection(Connection conn) {
try {
if (conn != null) {
conn.close();
conn = null;
System.out.println("连接关闭!!");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}


package baor.src.dbunit;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;

import org.dbunit.DatabaseUnitException;
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;

public class DataUtil {

public void simgleTableExport(Connection conn, String tableName,
String xmlFile) {
IDatabaseConnection connection = null;
try {
connection = new DatabaseConnection(conn);
QueryDataSet dataSet = new QueryDataSet(connection);
dataSet.addTable(tableName);
FlatXmlDataSet.write(dataSet, new FileOutputStream(xmlFile));
} catch (DatabaseUnitException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

public void allTableExport(Connection conn, String fileName) {
IDatabaseConnection connection = null;
try {
connection = new DatabaseConnection(conn);
IDataSet dataSet = connection.createDataSet();
FlatXmlDataSet.write(dataSet, new FileOutputStream(fileName));
} catch (DatabaseUnitException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}



package baor.src.dbunit;

import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;

import org.dbunit.DatabaseTestCase;
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSet;
import org.dbunit.dataset.xml.FlatXmlProducer;
import org.dbunit.ext.mysql.MySqlConnection;
import org.dbunit.operation.DatabaseOperation;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.xml.sax.InputSource;
import java.sql.Statement;
import baor.test.sql.ConnPropInfo;
import baor.test.sql.ConnUtil;
import baor.test.sql.PropInfoFactory;
import baor.test.sql.PropMySQLFactory;

public class DemoTest extends DatabaseTestCase {
Connection conn;
ResultSet rs;
Statement stmt;
FlatXmlProducer fxp;
SelectAllDemo testDemo;
ConnPropInfo demo;
ConnUtil testConnUtil;
String sql = "select * from testdemo where TestNo = 1";

@Before
public void setUp() throws Exception {
// 数据库连接对象
PropInfoFactory test = new PropMySQLFactory();
demo = test.createPropInfo();
testConnUtil = new ConnUtil();
conn = testConnUtil.getConnection(demo);
// xml文件对象
InputStream fis = new FileInputStream("C://testdemo1.xml");
InputSource is = new InputSource(fis);
fxp = new FlatXmlProducer(is);

}

@After
public void tearDown() throws Exception {
testConnUtil.closeConnection(conn);
}

@Test
public void testGet() throws Exception {
testDemo = new SelectAllDemo();
stmt = testDemo.setSTMT(testConnUtil, demo);
rs = testDemo.selectAllDemo(stmt, sql);
while (rs.next()) {
assertEquals(1, rs.getInt(1));
assertEquals("test", rs.getString(2));
assertEquals("paur", rs.getString(3));
}
stmt.close();
rs.close();

}

@Override
protected IDatabaseConnection getConnection() throws Exception {
// TODO Auto-generated method stub
return new MySqlConnection(conn, "test");
}

@Override
protected IDataSet getDataSet() throws Exception {
// TODO Auto-generated method stub
return new FlatXmlDataSet(fxp);

}

/**
* 在把xml里的数据导入到db里之前,需要对数据库里的表的数据做的操作。
*/
protected DatabaseOperation getSetUpOperation() throws Exception {
System.out.println("setup...");
return DatabaseOperation.CLEAN_INSERT;
}

/**
* 测试执行完以后,需要对数据库里的表里的数据做的操作
*/
protected DatabaseOperation getTearDownOperation() throws Exception {
System.out.println("teardown...");
return DatabaseOperation.NONE;
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值