PHP PHPUnit 怎么用
在做网站或后台功能开发时,你有没有遇到过这种情况:改了一段代码,原本正常的支付功能突然报错,花了一两个小时才找到问题——其实如果提前做了测试,就能避免这种“返工”。今天要聊的PHP PHPUnit,就是帮开发者快速验证代码是否靠谱的工具,咱们用日常例子把它说透。
先搞懂:PHPUnit到底是什么?
简单说,它是PHP里专门做“自动化测试”的小工具。举个例子:你做了一个“计算奶茶总价”的小功能,要测试“一杯20元,买3杯是不是60元”,“买1杯是不是20元”,如果手动算一遍,下次改了价格还要重新算,既麻烦又容易错。用PHPUnit的话,把这些测试规则写成固定的“小脚本”,每次改完代码一键就能跑完,全对就放心,错了马上告诉你哪里有问题。

第一步:先把PHPUnit装到PHP项目里
要用上它,得先安装,最方便的是用Composer(PHP常用的包管理工具,类似手机的应用商店)。打开你的项目文件夹,在命令行里输入一行命令就行:
composer require --dev phpunit/phpunit ^9
这里的--dev意思是“只在开发时用,上线的正式网站不用”,避免影响网站性能。装完后,项目里会多一个vendor文件夹,PHPUnit就藏在里面了。
第二步:写一个简单的测试例子
光装工具没用,得写测试的“小脚本”,咱们用最常见的“字符串判断”来试手。比如你做了一个功能,判断用户输入的昵称是不是包含敏感词“垃圾”,要测试两个场景:
输入“小奶茶”,应该返回“合法”;
输入“垃圾小王”,应该返回“非法”。
首先在项目里新建一个tests文件夹(专门放测试脚本,不乱丢文件),再建一个叫NameTest.php的文件,内容要符合PHPUnit的要求:
- 开头要引入PHPUnit的基础类;
- 测试类要继承这个基础类;
- 每个测试方法要以
test开头,这样PHPUnit能识别。
代码写好后是这样的:
`php
use PHPUnit\Framework\TestCase;
class NameTest extends TestCase {
// 测试合法昵称的场景
public function testValidName() {
$result = checkName("小奶茶");
$this->assertEquals("合法", $result);
}
// 测试含敏感词的场景
public function testInvalidName() {
$result = checkName("垃圾小王");
$this->assertEquals("非法", $result);
}
// 自己写的核心功能(实际项目里会是独立的类)
function checkName($name) {
return str_contains($name, "垃圾") ? "非法" : "合法";
}
}
`
第三步:运行测试,看结果
在命令行里,进入你的项目根文件夹,输入命令:
./vendor/bin/phpunit tests
PHPUnit会自动扫描tests里的所有测试文件,跑完后会给出结果:
- 要是两个测试都过了,会显示“OK (2 tests, 2 assertions)”,说明你的功能没问题;
- 要是把代码里的
"垃圾"改成了"奶茶",再跑测试,就会看到提示:Failed asserting that '合法' matches expected '非法',马上知道是敏感词判断错了。
小技巧:别测“别人写的代码”,只测“自己的功能”
很多新手会犯的错:把PHP自带的函数也写进测试里——比如测试str_contains能不能判断字符串,这没必要,因为PHP的函数本来就稳定。咱们要测的是自己写的业务逻辑,比如敏感词判断、订单计算、用户权限这些自己写的规则,这样测试才有用。
现在你应该明白,PHPUnit不是什么复杂的“天书工具”,就是帮你省时间、少出错的“代码质检员”。下次改完功能,记得跑一遍测试,别等用户反馈报错才返工~