PHP PHPUnit 怎么用

在做网站或后台功能开发时,你有没有遇到过这种情况:改了一段代码,原本正常的支付功能突然报错,花了一两个小时才找到问题——其实如果提前做了测试,就能避免这种“返工”。今天要聊的PHP PHPUnit,就是帮开发者快速验证代码是否靠谱的工具,咱们用日常例子把它说透。

先搞懂:PHPUnit到底是什么?

简单说,它是PHP里专门做“自动化测试”的小工具。举个例子:你做了一个“计算奶茶总价”的小功能,要测试“一杯20元,买3杯是不是60元”,“买1杯是不是20元”,如果手动算一遍,下次改了价格还要重新算,既麻烦又容易错。用PHPUnit的话,把这些测试规则写成固定的“小脚本”,每次改完代码一键就能跑完,全对就放心,错了马上告诉你哪里有问题。

PHP 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不是什么复杂的“天书工具”,就是帮你省时间、少出错的“代码质检员”。下次改完功能,记得跑一遍测试,别等用户反馈报错才返工~

上一篇 C / C++ 语言入门:从基础语法到高效编程的核心知识科普