AbstractDbunitTestCase




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(String tname) throws Exception{
backupSomeTable(new String[]{tname});
}
@AfterClass
public static void destory(){
try{
if(dbunitCon!=null)dbunitCon.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值