php单元测试主要依靠phpunit框架,需通过composer安装并配置phpunit.xml;为业务类编写test类及test方法,用assertequals等断言验证结果;支持@dataprovider批量测试、createmock隔离依赖、@expectexception验证异常,并可通过--coverage-html生成覆盖率报告。

PHP编写单元测试主要依靠PHPUnit框架,它能帮你验证代码逻辑是否正确、避免修改引发意外问题。关键在于写可测试的代码、用断言检查结果、通过命令行运行测试。
安装和配置PHPUnit
推荐使用Composer全局安装或项目内安装。项目内安装更灵活,避免版本冲突:
- 在项目根目录执行:composer require --dev phpunit/phpunit
- 生成配置文件(可选但推荐):vendor/bin/phpunit --generate-configuration,会创建phpunit.xml,可设置测试目录、自动加载等
- 确保autoload-dev在composer.json中已配置,让PHPUnit能加载测试类和被测类
编写第一个测试类
测试类名通常以Test结尾,对应被测类名;方法名以test开头或用@test注解。例如测试一个简单计算器:
- 被测类Calculator.php放在src/下,含add($a, $b)方法
- 测试类CalculatorTest.php放在tests/下,继承\PHPUnit\Framework\TestCase
- 在测试方法中调用$this->assertEquals(5, $calc->add(2, 3))这类断言判断结果是否符合预期
常用断言和测试技巧
断言是测试的核心,用于声明“这里应该是什么”。除了assertEquals,还有:
- assertTrue($condition) 检查布尔表达式为真
- assertNull($value) 确保返回值为空
- expectException(\InvalidArgumentException::class) 验证是否抛出指定异常
- 用@dataProvider标注方法,实现一组输入/输出的批量测试,减少重复代码
运行测试与查看结果
在终端运行vendor/bin/phpunit,默认执行tests/目录下的所有测试。常见用法:
- vendor/bin/phpunit tests/CalculatorTest.php 运行单个文件
- vendor/bin/phpunit --filter testAdd 只运行匹配的方法
- 成功显示绿色点(.),失败显示F,错误显示E,最后汇总通过率和耗时
- 搭配--coverage-html=coverage可生成代码覆盖率报告,直观看出哪些代码没被测试覆盖
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











