测试数据污染方案

 

nighthawk 写道
在做DAO测试的时候,有一个问题不得不面对,那就是使用数据库的方式。 
以oracle为例,多人开发时,如果大家都使用一个测试数据库实例。跑测试的时候,会导致数据之间的相互污染,比如表之间的关联关系,容易错乱。 

如果每个人都用自己的数据库实例,比如使用H2之类替代oracle。基础数据准备工作又是一个很大的工作量,还有就是H2之类的与oracle真实环境毕竟有些差距。 

请教楼主,在真正实践的时候,该如何解决这方面的问题?

 


  
    我的经验是:一定要做到团队中工作环境的标准化和独立化,切忌采用公用的数据库做测试,避免冲突。标准化,意味减少沟通成本,这也是Maven所极力提倡的。所谓标准化,是即团队成员的工作目录,安装的程序都做到一样,如果公司层面有这种标准化的内容当然最好,如果没有项目组也可以自己定义。 
   独立化,就是开发机的环境不要依赖于外部的,也即要完备,如数据库,memcached等都要有,当然可以模拟的就不要安装真实的了。做过国外外包项目的朋友都会知道,一个外包项目的开发环境包含了所有需要的东西,以虚拟机文件的方式提供,打开什么都有了,用VMWare打开即可开发。 
  简而言之,项目组每个开发者的工作机环境做到一致,包括目录结构,相关软件及版本。 

  剩下来的问题是:代码同步通过SVN或GIT等版本控制工具完成,但如何保证开发机的数据库的同步性呢?其实unitils整合了dbmaintain框架专门干这个活,它可以在单元测试前执行数据库变更脚本,同步本地的数据库结构。 
   也就是说,数据库一旦创建后,其后所有针对数据库的更改都必须脚本化,这样各开发终端下载数据库更改脚本,unitils的dbmaintain模块执行脚本以同步化本地数据库。可以通过http://www.dbmaintain.org/tutorial.html详细了解。 
   
   以下是我真实项目中的数据库变更脚本的结构: 
   
 

   由于我的项目采用数据库分库,每个库的变更脚本分开存放,如zhk,com等。我要求每个开发者对数据库的变更都必须写日志,以天为单元更新,写在根目录下的dbChangelog.txt,然后根据这个日常编写变更脚本及同步PowerDesigner的设计文档。 

 

摘自:单元测试系列之4:使用Unitils测试DAO层

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值