文章目录
简介
PHPUnit is a programmer-oriented testing framework for PHP.
It is an instance of the xUnit architecture for unit testing frameworks.
PHPUnit是一个轻量级的PHP测试框架。它是在PHP5下面对JUnit3系列版本的完整移植,是xUnit测试框架家族的一员(它们都基于模式先锋Kent Beck的设计)。
PHPUnit的依赖
- dom,PHP默认启用
- json,PHP默认启用
- pcre,PHP默认启用
- reflection,PHP默认启用
- spl,PHP默认启用
- tokenizer,PHP默认启用,生成代码覆盖率测试报告用到
- xdebug,需要自己安装,生成代码覆盖率测试报告用到
- xmlwriter,PHP默认启用,生成XML格式的报告用到
检查PHP是否启用了这些模块可以使用如下命令
|
|
PHPUnit的安装
PHP档案包方式
|
|
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 :表示测试被标记未不完整或未实现