php单元测试是代码完成后立即验证正确性的基本动作,关键在于环境稳定、结构清晰、运行快速;需用composer本地安装phpunit、配置自动加载和测试目录、遵循命名与断言规范。

PHP单元测试不是“要不要做”的选择,而是代码写完后立刻验证正确性的基本动作。起步关键不在工具多强大,而在环境稳、结构清、运行快。
用Composer本地安装PHPUnit
别装全局版本,也别手动改PATH。直接在项目根目录执行:
- composer require --dev phpunit/phpunit ^10.5(适配PHP 8.2+)
- 装完立刻验证:./vendor/bin/phpunit --version,有输出即成功
- 顺手加一行脚本到composer.json的"scripts"里:"test": "phpunit",之后只需composer test
配置phpunit.xml引导自动加载
根目录下运行./vendor/bin/phpunit --generate-configuration,生成phpunit.xml.dist(推荐用这个名,方便Git忽略实际配置)。确保其中包含:
- bootstrap="vendor/autoload.php"——让测试文件能自动加载你的类
-
里指定tests/为测试目录 - 若报Class 'PHPUnit\Framework\TestCase' not found,八成是漏了bootstrap或没写use PHPUnit\Framework\TestCase;
写第一个测试类:命名、继承与方法规范
比如你有个src/Calculator.php,就在tests/CalculatorTest.php里写:
- 类名必须以Test结尾,且extends TestCase
- 每个测试方法必须是public、无参数、返回void,且以test开头(如testAddReturnsCorrectSum)
- 别写private function testAdd()或addTest()——phpunit会静默跳过,不报错也不运行
选对断言:assertEquals vs assertSame
表面相似,行为天差地别:
- $this->assertEquals(5, $result):松散比较(==),"5"、5.0、5都通过
- $this->assertSame(5, $result):严格比较(===),类型和值都得一致,"5"直接失败
- 函数声明返回int,就该用assertSame;返回格式化字符串才考虑assertEquals
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











