啥是PHPUnit
PHP单元测试的框架有很多,比较主流的也就PHPunit。
PHPUnit是一个轻量级的PHP测试框架。它是在PHP5下面对JUnit3系列版本的完整移植,是xUnit测试框架家族的一员(它们都基于模式先锋Kent Beck的设计)。
单元测试是几个现代敏捷开发方法的基础,使得PHPUnit成为许多大型PHP项目的关键工具。这个工具也可以被Xdebug扩展用来生成代码覆盖率报告 ,并且可以与phing集成来自动测试,最后它还可以和Selenium整合来完成大型的自动化集成测试。
安装
PHPUnit有两种安装方式,两种比较简单的方式是:php档案包(phar)和composer。整体上说,在 Windows 下安装 PHAR 和手工在 Windows 下安装 Composer 是一样的过程。我们以composer安装为例。
如果用 Composer 来管理项目的依赖关系,只要在项目的 composer.json 文件中简单地加上对 phpunit/phpunit 的依赖关系即可:
然后我们去执行安装命令composer update,注意一下,我们这里采用的是非系统级的安装,也就是局部安装非全局安装(关于 composer全局安装和局部安装phpunit),笔者认为两者区别就是需不需要在安装目录bin下去执行phpunit命令。其实要支持全局也比较简单,把bin目录登记到PATH环境变量让命令可以找到其对应的可执行文件即可支持啦。
经过一杯咖啡的时间,PHPunit安装完了。你也可以phpunit --version测试是否安装成功。
安装完了之后,我们观察一下目录,红色部分为新增的文件。
我们再观察,composer安装方式并没有出现phpunit.phar文件。很多情况下php phpunit.phar 命令可用phpunit命令代替,这个后面再讲。
例子
我们要使用PHPunit支持,那就要对IDE软件作对应的配置,这里先不作IDE支持的介绍,大致参考如下;
这里配置其实是有缺陷的支持不了直接run文件
我们先不搅合IDE支持,直接上例子。
1、新建文件夹Testcase,编写SayHello.php:
2、新建测试用例SayHelloTest.php:
3、最后切换到bin目录,执行我们的测试文件,得到成功的断言结果(可以通俗理解为,继承单元测试框架,实例化需要测试的类并放入框架,使用框架中的断言等测试方法来实现单元测试):
这里虽然是用IDE但其实还是cmd命名执行
我们看到,参考文章中说:
编写完成后,切换到phpunit.phar所在目录命令行执行:php phpunit.phar Testcase/SayHelloTest.php
但其实我们上面说过,我们并没有phpunit.phar这个文件。找到可执行文件执行vendor/bin/phpunit ../../Testcase/SayHelloTest.php 或者是phpunit.phar命令则在phpunit.phar 所在目录执行php phpunit.phar Testcase/SayHelloTest.php ,然后运行当前的测试文件即可。所以总结一下,只要找到可执行文件,找到需要执行的测试文件目录即可。也就是如果是全局安装,只需要在项目的文件下直接执行 php phpunit.phar 或phpunit即可。
那么既然我们都用上了IDE了并且做了配置了,怎么在IDE直接RUN class文件而不需要cmd下执行命令呢?上面的IDE配置是否有缺陷呢?这个后面后续再讨论。
关于phpunit的安装和简单例子入门就到这里,更多请参看文档。当然要做unit test 并不是只要工具支持就可以了,对代码的可测性也是有要求的,否则写起用例将痛苦不堪,这点后续篇幅再来讨论。