PHP单元测试PHPUnit
简介
# PHPUnit的依赖
dom,PHP默认启用
json,PHP默认启用
pcre,PHP默认启用
reflection,PHP默认启用
spl,PHP默认启用
tokenizer,PHP默认启用,生成代码覆盖率测试报告用到
xdebug,需要自己安装,生成代码覆盖率测试报告用到
xmlwriter,PHP默认启用,生成XML格式的报告用到
检查PHP是否启用了这些模块可以使用如下命令
php -m | grep '模块名称'PHPUnit的安装
PHP档案包方式
wget https://phar.phpunit.de/phpunit.phar # 下载档案包
chmod +x phpunit.phar # 赋可执行权限
sudo mv phpunit.phar /usr/local/bin/phpunit
phpunit --version # 查看PHPUnit版本Composer方式
Composer使用参考https://getcomposer.org/
composer文件如下
编写PHPUnit测试
惯例和基本步骤
针对类Class的测试写在类ClassTest中。
ClassTest通常继承自PHPUnit_Framework_TestCase。
测试都是命名为test*的公用方法(也可以在放的文档注释块中使用@test标注将其标记未测试方法)。
在测试方法内,类似于assertEquals()这样的断言方法用来对实际值与预期值的匹配做出断言
举个例子:
执行测试命令
结果
依赖
@depends表示依赖关系
数据提供器
@dataProvider表示数据提供器
对异常进行测试
@expectedException表示程序抛出异常
@expectedException可以结合@expectedExceptionCode、@expectedExceptionMessage、@expectedExceptionMessageRegExp使用
对输出进行测试
expectOutputString方法可以测试程序的输出
PHPUnit的输出
先看一个demo
执行命令
输出结果如下
看输出第二行,有.FEF等,分表表示如下信息:
. :表示断言通过
F:表示断言失败
E:表示测试过程中抛出一个错误
R:表示测试被标记为有风险
S:表示测试被跳过
I :表示测试被标记未不完整或未实现