PHPUnit是PHP主流单元测试框架,用于验证代码逻辑和防止意外问题;推荐用Composer项目级安装,编写以Test结尾的测试类并使用assertEquals等断言进行验证。

PHPUnit 是 PHP 最主流的单元测试框架,用来验证代码逻辑是否正确、防止修改引发意外问题。它不难上手,关键是写可测的代码 + 写有针对性的测试用例。
安装 PHPUnit
推荐用 Composer 全局或项目级安装:
- 项目内安装(更推荐):composer require --dev phpunit/phpunit
- 安装后,测试命令变成:./vendor/bin/phpunit(Linux/macOS)或 vendor\bin\phpunit(Windows)
- 可选:加 --with-phpunit 或配置 phpunit.xml 指定测试目录、引导文件等
写一个简单测试类
假设你有一个 Calculator.php,含加法方法:
class Calculator {
public function add($a, $b) {
return $a + $b;
}
}
对应测试文件 CalculatorTest.php(命名以 Test 结尾,放在 tests/ 目录下):
立即学习“PHP免费学习笔记(深入)”;
use PHPUnit\Framework\TestCase;
class CalculatorTest extends TestCase
{
public function testAddReturnsCorrectSum()
{
$calc = new Calculator();
$this->assertEquals(5, $calc->add(2, 3));
$this->assertEquals(0, $calc->add(-1, 1));
}
}
说明:TestCase 是基类,assertEquals 是常用断言,失败时会清晰报错。
常用断言和技巧
不必死记,从最常用的开始用起:
- $this->assertTrue($condition) —— 判断布尔表达式为真
- $this->assertNull($value) —— 检查是否为 null
- $this->assertSame(1, $result) —— 严格比较(类型+值),比 assertEquals 更精确
- $this->expectException(\InvalidArgumentException::class) —— 测试是否抛出指定异常
- 用 @dataProvider 注解可复用同一测试逻辑跑多组数据
运行与查看结果
在项目根目录执行:
- ./vendor/bin/phpunit tests/ —— 运行整个 tests 目录
- ./vendor/bin/phpunit tests/CalculatorTest.php —— 只跑某个测试文件
- 成功显示 . (点),失败是 F,错误是 E,带详细堆栈和期望/实际值对比
- 加 --verbose 或 --debug 查看更详细过程
基本上就这些。不用一步到位写全量测试,先从核心函数、边界情况(空输入、负数、异常流)开始覆盖,习惯就自然了。











