PHP自动化测试概述
PHP是一种偏脚本化的语言,了解过ES6的朋友会发现PHP和ES6其实语法和一些特性上已经很接近了,对于我这种一直学Java的人来讲,觉得PHP和ES6语法上基本没太大区别。由于PHP的这种脚本化的特性,编码的风格一个人一个样,令其难以进行测试,这应该是每个想对PHP搞自动化测试,特别是其中单元化测试的人都会遇到的问题。我最近在公司接了个任务,要对项目中的一些很复杂的回路脚本进行自动化测试,希望组内所有人Merge代码的时候,会自动跑测试Case,这篇文章就是分享我在做这个任务时所找到的锤子。
锤子一: PHPUnit
PHPUnit是大家马上就会找到的一个锤子,关于它官方提供了PHPUnit-Book,里面介绍了其提供的测试工具和一些测试基本理念,大家可以花一天左右的时间系统的看完这个文档,我这里就不做赘述了。我举一个 理想情况 下的PHPUnit测试的例子:
上图展示的是测试MyFoo
类中的doSomething
方法,这个方法实际是调用了传入的MyBar
类中的doSomethingElse
方法,在这种情况下,我们只需要利用PHPUnit提供的测试替身工具,构建一个MyBar
的测试替身,然后Mock掉其中的doSomethin