DBUnit实践

       经过下午和晚上的摸索,基本上已经搞定了DBUnit。说实在话,我觉得DBUnit比较简单,如果我去设计的话,应该也能够设计得比较好。不过,我只对MYSQL, HSQLDB稍微熟悉一点,其它的数据库就不行了
      
       好了,闲话少说。

       在开始DBUnit实践之前,我调查了相关的DBUnit的资料,调查了一些做DAO测试的观点和看法。
      
  1. 目前,最有效的方法是利用脚本来重建数据库。测试前去drop表,然后create表,然后再进行测试。
  2. 每一个开发人员需要搞一个数据库实例。不能公用一个数据库。单元测试数据库最好和开发数据库分开。HSQLDB内存数据库值得尝试(我不推荐)。
  3. 使用springAbstractTransactionalDataSourceSpringContextTests。在每个testcase开始之前,会自动开启一个事务,然后在结束的时候进行事务回滚。这样就可以隔绝几个测试用例之间的相互干扰。这很重要,才能够实现测试的自动化。

  4. 测试DAO不如连数据库一起测试吧。因为DAO测试的目的不是DAO接口实现对不对,而是测试是否如你预期的发送了SQL,如你预期的返回了结果集。这个时候你Mock之后,测试就没有意义了。
  5. 在SpringSide中,利用DBUnit提供的数据库准备和回收工作,提供三种数据库连接配置,采用Excel为数据源,提供两种数据库的配置和回收的应用策略。(我看过源代码了,相当简单,对DBUnit进行了下封装,把自己想要的功能给提取出来了,感谢。)

    上述观点和做法,对我实践DBUnit有很大帮助。最后,去DBUnit站点,读了一下关于DBUnit的Core Component部分,其实就三部分:
  1.     DataSet: 这个是我们需要准备的测试数据。
  2.     DatabaseOperation: 对数据库的操作,有几种不同的操作,文档写得比较清楚。
  3.     DataBaseConnection:需要持有对数据库的Connection,以便执行各种操作。
     DBTestCase extends TestCase,DBTestCase的源代码写得比较清楚,看看就明白了。它就是在SetUp的时候,执行定义好的数据库操作;在TearDown的时候,同样也是执行数据库操作就OK了。

     应该说:DBUnit这个框架其实相当简单。如果我们对Junit比较熟悉的话,应该很快就可以上手的。


    具体到自己的项目,我认为需要注意几点:
    1. 写一个基TestCase,将测试数据库的配置信息给写好。不用在每个Sub TestCase中去写这些东西。直接继承JdbcBasedDBTestCase就可以了。(不过这个类也没有提供多少东西,也无所谓了)
    2. 对于每个Sub TestCase,需要的DataSet文件,需要单独建立data文件。组织这种文件的方式需要我们写好。Sub TestCase中,直接返回FlatXmlDataSet就可以满足要求。
    3. EXCEL文件不是很好用。我用EMS MYSQL MANAGER导出xls文件后,运行单元测试老是报DataType转换错误。DATE类型似乎转换是有问题的。
    4. 速度不快。因为要配置实体工具,得花一段时间。还要改变datasource.xml以及hibernate.cfg.xml文件,不是很方面。这也能看出来,实体工具的性能不行。
   
    好了,以后可以用DBUNIT来做DAO测试了,何乐而不为。以前,我总是写很多测试方法,都放在Transaction中,最后回滚,现在不用写那些代码了。不错。

    附:
           DBUnit相关资料:

   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值