【程序编程相关:关于JSF和Struts的讨论2】
运用dbunit进行高效单元测试 【推荐阅读:CSS制作标签卡TAB效果】译者注:最近对dbunit比较感兴趣,看到这篇文章就翻译出来与大家共享,不过我也是new 【扩展信息:我的Struts 技巧集】 hand,所以翻译不好的地方请大家指正.我的msn:zhlihui@hotmail.com,如果大家有什么好的资源与经验欢迎与我交流.引入dbunit
现实系统中通常会有一些具有外部依赖性的对象,这些对象与数据库或者其他对象存在诸多关联.如果我们对这样的对象编写单元与组件级测试的话,可以想象将是非常麻烦的一件事.因为这种外部依赖性的存在,使的我们很难将对象孤立出来进行测试.经常提及的白盒测试法,基本上就是通过控制对象的外部依赖性来达到隔离对象的目的,使的可以操作这些对象的状态与相关行为.
运用 模拟对象(mock objects)
或者stubs,就是一个控制对象外部依赖性的解决方案.通过隔离那些关联的数据库访问类,象jdbc的相关操作类,对于控制对象外部依赖性将是很有效的.但模拟对象的解决方案对一些特殊的应用系统架构就显得力不从心了,象那些运用了ejb的cmp(container-managed persistence)或者 jdo(java data objects)的应用系统架构,在这些架构里,数据库的访问对象是在最底层的而且很隐蔽.由manuel laflamme
编写的开放源代码的dbunit架构体系,对于控制系统内部的数据库依赖性提供了一个非常不错的解决方案.他允许程序员在整个的测试过程中自由的管理控制数据库的状态,这很重要.利用dbunit,在测试之前,我们可以给目标数据库植入我们需要的数据集,而且,在测试完毕后,数据库完全能够回溯到测试前的状态.在很多成功的软件项目中,测试自动化往往是关键的层面.dbunit允许开发人员创建测试用例代码,在这些测试用例的生命周期内我们可以很好的控制数据库的状态.而且,这些测试用例是很容易实现自动化的.这样在测试过程中我们无须对它进行人工的干预,为人工干预造成的后果而担心就更没必要了.
简单介绍
配置使用dbunit的第一步我们首先需要知道如何生成数据库schema,这个文件是xml格式的,其中包括了数据库的表及相关数据信息. 例如,这里有一个数据库表employee ,我们可以用sql的形式这样将他表示出来.
而且,我们可以看到,一个简单的数据集可以这样表示
在dbunit中,上面这个表与抽样数据信息可以用xml文件的形式这样表示:
<employee employee_uid=´1´
start_date=´2001-11-01´ first_name=´andrew´ ssn=´xxx-xx-xxxx´ last_name=´glover´ />... 下一页