phpunit是一个轻量级的php测试框架
Linux下安装
$ wget https://phar.phpunit.de/phpunit-7.0.phar $ chmod +x phpunit-7.0.phar $ sudo mv phpunit-7.0.phar /usr/local/bin/phpunit $ phpunit --version
出现以上提示说明安装成功
start~
1.编写一个测试类
- 一个测试类通常要继承PHPUnit\Framework\TestCase
- 测试类一般命名为 classNameTest并存放在Tests目录下
- 测试方法一般命名为testFuncName()
2.测试的依赖关系
- 通过关键字@depends 来实现不同测试方法间的依赖关系,下面的例子中,testEmpty()方法返回的值将作为参数供testPush()使用,testPush()方法返回的值作为参数供testPop()使用,这几个方法在执行时是有依赖关系的
- 当某个测试所依赖的测试失败时,PHPUnit会跳过这个测试
- 多重依赖:一个测试可以依赖多个测试,可以使用func_get_args()来获取这些方法返回的参数,参数的顺序与@depends依赖方法的顺序一致
3.数据供给器
@addProvider
测试方法接受另一个方法生成的数据作为参数,数据以数组的形式存在,数组中的元素也是数组,或者是一个实现了Iterator接口的对象(待学习),在对这个提供数据的方法中的数据进行迭代处理,每一次产生一个数组,产生的数据作为测试方法参数的一部分
additionProvider方法是testAdd方法的数据供给器,它返回一个包含四个数组的数组,testAdd执行时将迭代使用这个数组中的每个数组元素作为参数,如第一迭代时,$a = 0, $b = 0, $expected = 2
testAdd方法对其进行了断言操作,判断数组中前两个元素之和是否等于第三个元素,以此类推,可以看到结果,执行一共有4个断言,有1个是失败的
csv形式的数据供给,使用返回迭代器对象
4.命令行测试执行器
phpunit ClassTest.php
命令行测试执行器还有一些常用的参数,待学习...
运行后输出提示符用来指示进展
. 成功
F 失败
E 错误
R 有风险
S 被跳过
I 不完整或未实现
5.基境(fixture)
利用setUp()方法预先设置一些测试数据或代码,用于接下来的测试,这些数据或代码就叫作基境,并在测试结束后自动执行tearDown()方法清理这些数据,类似于php中的构造函数和析构函数
6.断言(Assert)
预计设置的一些表达式或值,在执行测试时判断测试的结果是否与我们预先假设的一至,如果一致,那么我们就认为测试是成功的
一些常用的断言函数
assertTrue(true)
是否为true
assertFalse(0)
是否为false
assertEquals(a, b)
是否相等,支持各种基础类型
assertEmpty(array)
是否为空,数组
assertNotEmpty(array)
是否不为空