php 单元测试 webserver,20181028-PHP单元测试

原标题:20181028-PHP单元测试

PHP单测基本操作

我11年就开始接触PHP单测,那时候还是3.x版本,现在PHPUnit都已经到7.x了. 当时,需要安装一堆lib,放到include_path里,现在都变成一个文件,下载就能用了,方便很多。 我接触过多种业务的单测,以及YAF,Yii,CI这三个框架的单测。

框架对PHP单测的影响因素

在以往的经验中深感框架对PHP单测的影响很大,主要是因为不同框架的autoload方式都不一样。这和Java的命名空间方式差别很大。不过,根源就在于单例模式对单测的支持度较差,能解决单例模式的对象mock,就比较好搞定单测。

框架对PHP单测的影响优化

YAF框架可以通过参数注入和构造注入解决mock,CI及Yii就需要修改底层框架源码,来达到对单例对象的Mock注入。

接下来,要面对的就是数据库和缓存,要不要mock的问题。经过实践,我采取的是使用各自的mysql和redis,在启动测试用例的时候,写入固定的单测数据。这么做的考虑主要有:

数据库里的数据能用于单元测试,也可以用于QA的接口及集成测试;

mock数据库和缓存,更多的要看代码层面,这有的时候成本较大;

最后,从QA同学学到的,单元测试都用中文组织,可以明显提高单测可读性。

PHP的单测还是有一定的学习成本以及上手成本。特别是复杂业务,对case的维护需要更多的投入。 不过,我还是看好单元测试,因为会使用单测的人,在代码调试,代码质量方面都更有效率,效果更好。

单元测试的实现与执行

解决完框架方面的问题,就要开始考虑,写怎么样的单测,是函数级别的单测,还是接口级别的单测。 在PHP方面,我倾向于做接口级别的单测,输入数据写在$_POST[]中,然后,执行controller。 在java方面,我就倾向于做函数级别的单测,成本较小。

96a19802ac505beb0f0e05945ac72e3d.png

总结

PHP的单测考虑要点:

解决PHP的框架是第一要做的事情,对于部分框架,可能要修改框架源码;

PHP多是WEB开发,推荐做接口级别的单测;

做好单测前的数据库等数据准备,不使用数据库mock;

可以考虑用中文来组织编写单元测试;

优化单测环境搭建,执行,可以让更多人使用单测,这部分优化可能更易于团队走上单测的道路。

附单元测试分享PPT下载 (请点击 阅读原文 获取下载链接)返回搜狐,查看更多

责任编辑:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值