为了账号安全,请及时绑定邮箱和手机立即绑定

依赖于数据的工程如何进行单元测试?

依赖于数据的工程如何进行单元测试?

慕田峪9158850 2019-04-07 11:18:36
做一个项目势必要进行单元测试以保证程序的健壮性,以便保证版本迭代时功能正常。但是如果一个程序(如CMS等)本身就是依赖于数据库的,应该如何在保证不会破坏数据库的情况下进行单元测试呢?举例:访问?id=1的页面,先查询sqlSELECT*FROM`data`WHERE`ID`=1,然后将其赋值给$data->ID、$data->Title这些属性;要保证这些属性的值正常。然后,根据一些信息算出$data->Hash,如$data->Hash=md5($data->ID),这些计算的值也要正常。接着,删除id=1的文章,要sqlDELETEFROM`data`WHERE`ID`=1,必须保证ID所在行被删除。再其次,后台发布一篇文章,必须使得数据库内多出ID=2,内容为设定值的文章。但是HTML代码内容不一定要相同,可以允许诸如多余的空格、换行。还需要模拟XML-RPC协议发表一篇文章。像以上的内容,应该如何进行单元测试呢?知乎同名问题:http://www.zhihu.com/question/28278690
查看完整描述

2 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

用单独的数据库运行测试,每次测试开始前都清空数据库,并重新生成测试数据。
另一种做法是每次生成测试数据的时候记录下来生成的数据的ID,然后在完成测试后删除本次生成的数据,而不是每次都清空数据库。这种方案比较适合既需要自动测试,又需要手动测试的情况,自动测试不会导致手动测试时添加的数据被删除。
测试最好别依赖于具体的值(比如你的例子的ID=1),最好用单独的函数来创建每一条测试数据(比如generateAccount和generateArticle),这些函数返回创建出来的数据的ID,否则如果硬编码ID的话,在添加或移除测试的时候会很麻烦。
                            
查看完整回答
反对 回复 2019-04-07
  • 2 回答
  • 0 关注
  • 324 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信