您的位置:首页 > 其它

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();
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: