1. 准备测试环境
在Ubuntu系统中,确保已安装PHP、Composer及PHPUnit(测试核心工具)。PHPUnit需作为开发依赖安装,通过Composer添加:
composer require --dev phpunit/phpunit
安装完成后,PHPUnit的可执行文件会位于项目根目录的vendor/bin/下(如vendor/bin/phpunit)。
2. 配置PHPUnit
创建phpunit.xml配置文件(项目根目录),定义测试套件的路径及自动加载规则。示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.5/phpunit.xsd"
bootstrap="vendor/autoload.php"
colors="true">
<testsuites>
<testsuite name="Project Test Suite">
<directory>./tests</directory> <!-- 测试文件所在目录 -->
</testsuite>
</testsuites>
</phpunit>
此配置会加载项目自动加载文件(vendor/autoload.php),并指定tests/目录为测试文件目录。
3. 编写测试用例
在tests/目录下创建测试文件(如StringUtilsTest.php),命名需遵循<ClassName>Test.php规范。示例测试类(测试字符串工具类):
namespace VendorName\PackageName\Tests; // 替换为你的包命名空间
use PHPUnit\Framework\TestCase;
use VendorName\PackageName\StringUtils; // 替换为你的类路径
class StringUtilsTest extends TestCase {
public function testCapitalize(): void {
$this->assertEquals('Hello World', StringUtils::capitalize('hello world'));
$this->assertEquals('Foo Bar', StringUtils::capitalize('foo bar'));
}
public function testSlugify(): void {
$this->assertEquals('hello-world', StringUtils::slugify('Hello World!'));
$this->assertEquals('foo-bar', StringUtils::slugify('Foo Bar@'));
}
}
测试方法需以test_开头(PHPUnit 9+支持void返回类型),使用$this->assertEquals()等断言验证结果。
4. 运行测试
通过Composer运行PHPUnit测试,命令如下:
vendor/bin/phpunit
若在composer.json中配置了测试脚本(如"test": "phpunit"),可直接使用:
composer test
运行后,PHPUnit会自动执行tests/目录下的所有测试用例,并输出结果(如通过/失败数量、错误详情)。
5. 集成测试到开发流程(可选)
为确保每次代码变更后自动运行测试,可将测试脚本添加到composer.json的scripts部分:
{
"scripts": {
"post-update-cmd": [
"phpunit" // 更新依赖后自动运行测试
],
"test": "phpunit" // 自定义测试命令
}
}
配置后,执行composer update时会自动触发测试,或通过composer test手动运行。
注意事项
tests/目录(或phpunit.xml中指定的目录);composer.json中的autoload配置正确(如psr-4自动加载),避免测试时类无法加载;launch.json实现测试调试。