关于SpringSide的DbUnit测试的思考
关于SpringSide的DbUnit测试的思考
------》springSide的DbUnitUtils
springSide的测试用的是 :
DbUnitUtils.loadData(dataSource, "/data/default-data.xml");// 加载xml数据前先清空涉及的表
DbUnitUtils.removeData(dataSourceHolder, "/data/default-data.xml");//删除xml涉及到的表的数据
如果是测试数据库,这么写可以,但如果要在应用数据库上测试(当然实际不太可能)应该用以下方式:
DbUnitUtils.appendData(dataSource, "/data/dbunit.xml"); //在原基础上增加数据
DbUnitUtils.removeDataFromXML(dataSourceHolder, "/data/dbunit.xml");//删除xml中涉及的数据
总结 :DbUnit结合spring测试框架,前者负责准备数据,后者进行测试控制。
------》附 DbUnit导出数据库到XMLpackage com.test.dbunit;import java.io.FileOutputStream;import java.sql.Connection;import java.sql.DriverManager;import org.dbunit.database.DatabaseConnection;import org.dbunit.database.IDatabaseConnection;import org.dbunit.database.QueryDataSet;import org.dbunit.dataset.xml.FlatXmlDataSet;public class TestApp {public static void main(String[] args) throws Exception{Class.forName("org.h2.Driver");Connection conn = DriverManager.getConnection("jdbc:h2:tcp://localhost/~/mySpringSide1", "sa", "");IDatabaseConnection connection = new DatabaseConnection(conn);QueryDataSet dataSet = new QueryDataSet(connection);//将整个COMMENTS表里的数据导出到 xml文件里dataSet.addTable("COMMENTS");//将ARTICLES表里符合条件的数据导出到xml文件里dataSet.addTable("ARTICLES","select * from ARTICLES where id < 4");//导出到dbunit.xml文件里FlatXmlDataSet.write(dataSet,new FileOutputStream("dbunit.xml"));}}