日期:2014-05-16  浏览次数:20447 次

在给DAO和BL写测试还在为数据而烦恼吗,试试Dbunit和jailer

对DAO和BL层进行测试由于通常都会牵扯到数据库,一直是一个比较头痛的事情。

  1. 要是抛开数据库进行模拟的话,那么模拟的真实度讲直接影响到你单元测试的质量。
  2. 要是链接数据库进行测试,准备DB的环境还好说,准备DATA环境就是一个非常痛苦的一个事情,尤其是当面对错综复杂的主外键关系时,测试前的准备数据是一个一直让developer厌恶写单元测试的一个重要理由。

?

这段时间综合考虑了一下以后决定还是使用链接数据库来进行测试,这样更加符合真实环境一些。

我的标题里面写到DBunit,多的介绍就不说了,google一下,已经有很多介绍了。

DBunit的主要作用是帮我导入已经准备好的数据环境。比如说表A依赖于B,B依赖于C,我现在要测试插入一个数据到A里面,那么准备数据的时候就一定要准备B和C的数据。

?

昨天让我感觉到惊叹的是的是标题里面写到的另外一个关键字,jailer,它是用来帮助我导出数据的,还是上面那个例子来说,我可以写一条sql语句去查询指定条件的B表数据,而jailer可以帮助我把这些查询出来的记录需要依赖的C表记录也给我查询出来并导出。jailer是最近才支持的DBunit,前一段时间我还自己做了一个小工具做上面这个工作,现在有了jailer,看来我做的小工具是要被扔到垃圾箱里了。

给一个jailer的截图,截图里面那个最神奇的就是对于关系表图形展示了,至少我在展示的时候,所有人都对这个功能感到有意思。

这是jailer的地址:http://jailer.sourceforge.net/home.htm

jailer