Spring--对业务层的UnitTest

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

磨蹭了很久,终于开始用UnitTest。原因一是和大家一样,不想晚上做噩梦,二是在Spring下对业务层TDD,能够不需要重启Tomcat,能够完全摆脱对显示层的依赖,而专注于业务层的开发。

但是我们也只在业务层使用UnitTest,因为显示层至今没有什么好的UnitTest方法,而我们的业务逻辑又严格封装在业务层,Controler层只做个组装分派的基本动作,没必要花大力气去测试。

在Spring下的测试很简单,写一个父类执行ApplicationContext的载入,并用DbUnit负责测试前后的数据备份和恢复。而子类可以通过成员变量控制父类的行为。

源码如下:

public class DAOTestCase extends TestCase

{

protected ClassPathXmlApplicationContext ctx;

protected String[] contextFiles = null;

protected DatabaseConnection dbunitConn;

protected boolean needBackup = false;

protected String xmlFilePath = null;

protected String[] tableNames = null;

public void setUp() throws Exception

{

if(contextFiles==null)

{

contextFiles = new String[]{"applicationContext-Hibernate.xml";

}

this.ctx = new ClassPathXmlApplicationContext(contextFiles);

DbUtil dbUtil = new DbUtil(ctx);

dbunitConn = new DatabaseConnection(dbUtil.getConn(), "LH");

if (needBackup)

{

if (xmlFilePath == null)

xmlFilePath = "test/dbunitData/myTestData.xml";

if (tableNames != null)

{

ITableFilter filter = new DatabaseSequenceFilter(dbunitConn, tableNames);

IDataSet dataset = new FilteredDataSet(filter, dbunitConn.createDataSet());

File f_file = new File(xmlFilePath);

new File(f_file.getParent()).mkdirs();

XmlDataSet.write(dataset, new FileOutputStream(f_file));

}

else

{

throw new Exception("your choice backup data but no table names asign");

}

}

}

public void tearDown() throws Exception

{

IDataSet dataSet = new XmlDataSet(new FileInputStream(xmlFilePath));

DatabaseOperation.REFRESH.execute(dbunitConn, dataSet);

super.tearDown();

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航