本文目录导读:

PHP 单元测试最主流的框架是 PHPUnit,它是事实上的标准,此外还有一些其他选择,取决于你的具体需求:
PHPUnit(最主流)
- 官方标准,几乎所有的 PHP 框架(Laravel、Symfony 等)都内置支持
- 功能最全面,社区最大,文档丰富
- 支持测试驱动开发(TDD)和行为驱动开发(BDD)
- 包含代码覆盖率分析、Mock 对象、数据提供器等高级功能
// 典型用法
use PHPUnit\Framework\TestCase;
class CalculatorTest extends TestCase
{
public function testAdd(): void
{
$calculator = new Calculator();
$this->assertEquals(4, $calculator->add(2, 2));
}
}
Pest(现代、优雅)
- 基于 PHPUnit 构建,但提供更简洁的 API
- 采用闭包和函数式风格,代码更简洁
- 内置测试文件组织、并行测试等特性
- 近年来增长迅速,尤其在 Laravel 社区
// Pest 风格
test('calculator adds numbers', function () {
$calculator = new Calculator();
expect($calculator->add(2, 2))->toBe(4);
});
PHPSpec(BDD 风格)
- 专注于行为驱动开发
- 先描述行为,再实现代码
- 自动生成测试桩代码
Codeception(集成测试)
- 适合端到端测试和集成测试
- 支持多格式(单元测试、功能测试、验收测试)
- 适合测试 REST API、数据库交互等
选择建议
| 场景 | 推荐 |
|---|---|
| 标准项目 | PHPUnit(最安全的选择) |
| Laravel 项目 | Pest 或 PHPUnit(Laravel 默认支持) |
| 追求简洁现代 | Pest |
| BDD 开发流程 | PHPSpec |
| 需要 API/集成测试 | Codeception 或 PHPUnit |
安装(以 PHPUnit 为例)
composer require --dev phpunit/phpunit
配置 phpunit.xml 文件后,运行:
./vendor/bin/phpunit
我的建议:如果是新项目,可以尝试 Pest(基于 PHPUnit,学习曲线平缓);如果是成熟项目或团队协作,PHPUnit 是最稳妥的行业标准,两者可以混用(Pest 底层就是 PHPUnit)。