AbstractDbunitTestCase
2017-09-15 22:49
281 查看
import static org.junit.Assert.assertNotNull;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
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.DataSetException;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.FlatDtdDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSet;
import org.dbunit.dataset.xml.FlatXmlProducer;
import org.dbunit.operation.DatabaseOperation;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.xml.sax.InputSource;
public class AbstractDbUnitTestCase {
public static IDatabaseConnection dbunitCon;
//创建临时文件
private File tempFile;
private File dtdFile;
//初始化数据库连接(每次只会加载一次(对一个类全测试时只会运行一次),必须要静态方法)
@BeforeClass
public static void init () throws DatabaseUnitException, SQLException{
dbunitCon=new DatabaseConnection(DbUtil.getConnection());
}
//得到测试文件(xml)
protected IDataSet createTestXml(String tname) throws DataSetException, FileNotFoundException, IOException{
InputStream is = AbstractDbUnitTestCase
.class
.getClassLoader().getResourceAsStream(tname+".xml");
assertNotNull("dbunit的基本数据文件不存在",is);
//创建DataSet
return new FlatXmlDataSet(new FlatXmlProducer(new InputSource(is),new FlatDtdDataSet(new FileReader(dtdFile))));
}
protected void resumeData() throws DatabaseUnitException, SQLException, IOException{
IDataSet ds = new FlatXmlDataSet(new FlatXmlProducer(
new InputSource(new FileInputStream(tempFile)),new FlatDtdDataSet(new FileReader(dtdFile))));
DatabaseOperation.CLEAN_INSERT.execute(dbunitCon, ds);
}
//拷贝数据库中所有表
protected void backupAllTable() throws Exception{
IDataSet ds=dbunitCon.createDataSet();
backupTable(ds);
}
private void backupTable(IDataSet ds) throws Exception{
tempFile = File.createTempFile("back", "xml");
dtdFile = File.createTempFile("back","dtd");
//写dtd(为了规范表的字段,主要是为了解决表首语句有字段为空的问题)
FlatDtdDataSet.write(ds, new FileWriter(dtdFile));
//写数据表中的文件
FlatXmlDataSet.write(ds, new FileWriter(tempFile));
}
protected void backupSomeTable(String[]tname) throws Exception{
QueryDataSet qds=new QueryDataSet(dbunitCon);
for(String str:tname){
qds.addTable(str);
}
backupTable(qds);
}
protected void backupOneTable(
5e1c
String tname) throws Exception{
backupSomeTable(new String[]{tname});
}
@AfterClass
public static void destory(){
try{
if(dbunitCon!=null)dbunitCon.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
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.DataSetException;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.FlatDtdDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSet;
import org.dbunit.dataset.xml.FlatXmlProducer;
import org.dbunit.operation.DatabaseOperation;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.xml.sax.InputSource;
public class AbstractDbUnitTestCase {
public static IDatabaseConnection dbunitCon;
//创建临时文件
private File tempFile;
private File dtdFile;
//初始化数据库连接(每次只会加载一次(对一个类全测试时只会运行一次),必须要静态方法)
@BeforeClass
public static void init () throws DatabaseUnitException, SQLException{
dbunitCon=new DatabaseConnection(DbUtil.getConnection());
}
//得到测试文件(xml)
protected IDataSet createTestXml(String tname) throws DataSetException, FileNotFoundException, IOException{
InputStream is = AbstractDbUnitTestCase
.class
.getClassLoader().getResourceAsStream(tname+".xml");
assertNotNull("dbunit的基本数据文件不存在",is);
//创建DataSet
return new FlatXmlDataSet(new FlatXmlProducer(new InputSource(is),new FlatDtdDataSet(new FileReader(dtdFile))));
}
protected void resumeData() throws DatabaseUnitException, SQLException, IOException{
IDataSet ds = new FlatXmlDataSet(new FlatXmlProducer(
new InputSource(new FileInputStream(tempFile)),new FlatDtdDataSet(new FileReader(dtdFile))));
DatabaseOperation.CLEAN_INSERT.execute(dbunitCon, ds);
}
//拷贝数据库中所有表
protected void backupAllTable() throws Exception{
IDataSet ds=dbunitCon.createDataSet();
backupTable(ds);
}
private void backupTable(IDataSet ds) throws Exception{
tempFile = File.createTempFile("back", "xml");
dtdFile = File.createTempFile("back","dtd");
//写dtd(为了规范表的字段,主要是为了解决表首语句有字段为空的问题)
FlatDtdDataSet.write(ds, new FileWriter(dtdFile));
//写数据表中的文件
FlatXmlDataSet.write(ds, new FileWriter(tempFile));
}
protected void backupSomeTable(String[]tname) throws Exception{
QueryDataSet qds=new QueryDataSet(dbunitCon);
for(String str:tname){
qds.addTable(str);
}
backupTable(qds);
}
protected void backupOneTable(
5e1c
String tname) throws Exception{
backupSomeTable(new String[]{tname});
}
@AfterClass
public static void destory(){
try{
if(dbunitCon!=null)dbunitCon.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
相关文章推荐
- ActivityUnitTestCase示例
- Struts2+Spring的UnitTest编写(使用StrutsTestCase的子类StrutsSpringTestCase)
- 关于测试框架junit dbunit strutstestcase
- 让一个继承unittest.TestCase的类下的setUp和tearDown只执行一次
- [Windows PowerShell06]-PowerShell Run UnitTestCase
- phpunit api PHPUnit_Extensions_OutputTestCase
- Python基础-单元测试-unittest.TestCase(setUp和tearDown)
- instrumentation中的ActivityUnitTestCase学习笔记(4)
- python 单元测试(assert 或者 unittest.TestCase)
- 单元测试:unittest.TestCase
- python进阶之Unittest写case(3)
- 在使用unittest.TestLoader().loadTestsFromNames()加载用例时遇到no attribute named case的问题
- ActivityInstrumentationTestCase2 和 ActivityUnitTestCase
- python unittest TestCase间共享数据(全局变量的使用)
- Django unittest 设置跳过某些case
- Android Studio 自带测试ActivityInstrumentationTestCase2,ActivityUnitTestCase使用
- 简易扩展Visual Studio UnitTesting支持TestMethodCase
- 应用Selenium unittest写单元测试case
- unittest sample
- [SoftwareTesting][UnitTest][初级]VC++ 2008 Google Test:gtest 安装与配置