首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

测试数据传染方案

2012-12-31 
测试数据污染方案?nighthawk 写道在做DAO测试的时候,有一个问题不得不面对,那就是使用数据库的方式。?以ora

测试数据污染方案

?

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层

热点排行