参考连接:(15条消息) 命令行执行phpunit 类找不到_PHPUnit 单元测试都不会的, 没法写出高质量的代码..._weixin_39567013的博客-CSDN博客
具体代码:phpunit测试代码: phpunit测试代码 (gitee.com)
目前还有bug未解决(放在文章末尾,估计是配置文件出错)
一、规范
PHPUnit规定了一个测试类必须遵守如下的规定:
单元测试类必须以Test结尾,必须继承 \PHPUnit\Framework\TestCas基类。
每个测试函数必须以test开头。
还有一些良好的编码习惯可以参考:
单元测试代码都放在test目录下。
每个单元测试类都以被测试的类名开头。例如被测试类为CalculateService,那么单元测试类应该为CalculateServiceTest。
每个单元测试函数应该为被测试函数名结尾。例如被测试函数为 abs,那么单元测试函数应该为 testAbs。
二、如何安装
可以通过composer进行安装
$ composer require phpunit/phpunit
在 composer.json 中会出现如下依赖
{
"require": {
"phpunit/phpunit": "^7.5"
}
}
三、编写代码测试
phpunit常用断言方法
更多断言方法详见 phpunit 官方文档,基本都能顾名思义。

如何运行单元测试
# 运行全部测试
phpunit
# 运行某个分组的单元测试
phpunit --group GroupA
# 运行指定测试类的所有测试用例
phpunit tests/xxxxTest.php
# 运行所有测试类中满足filter条件的方法
phpunit --filter xxxFunc
# 运行某个测试类中满足filter条件的
phpunit.xml 是什么
phpunit.xml 是一个XML格式的配置文件,能够配置单元测试中的一些默认行为,比如环境变量、启动文件、日志记录等,官方文档如下 https://phpunit.readthedocs.io/zh_CN/latest/configuration.html
如何查看代码覆盖率
执行 phpunit 之后,根据 <logging> 中的配置,会自动生成代码覆盖率信息至 ./tests/codeCoverage/ ,打开其中 index.html 即可查看覆盖率信息。
举个栗子
以一个简单的斐波拉契数列计算函数为例
斐波那契数列由0和1开始,之后的斐波那契系数就是由之前的两数相加而得出。
输入输出分析
根据函数特点,我们可以通过验证已知情况和特殊情况的方式去验证,经过分析结果如下
正常输入的已知情况

异常输入的情况处理
处理为0,或者抛出异常均可
编写测试类
tests/FunctionTest.php
函数功能实现
functions.php
function fibon($a)
{
if (!is_int($a)) {
return 0;
}
if ($a <= 0) {
return 0;
} elseif ($a == 1) {
return 1;
} else {
return fibon($a - 1) + fibon($a - 2);
}
}
运行结果
