1. 安装PHPUnit
在Ubuntu终端中,通过Composer全局安装PHPUnit(推荐方式,便于项目级管理):
composer global require phpunit/phpunit
安装完成后,将Composer的全局bin目录添加到系统PATH中(如使用bash,编辑~/.bashrc或~/.zshrc文件,添加export PATH="$PATH:$HOME/.composer/vendor/bin",然后运行source ~/.bashrc或source ~/.zshrc使更改生效)。也可通过Ubuntu软件仓库安装(sudo apt-get install phpunit/phpunit),但全局安装更灵活。
2. 配置PhpStorm使用PHPUnit
打开PhpStorm,进入File > Settings(或PhpStorm > Preferences,macOS用户),导航至Tools > PHP > PHPUnit:
/usr/bin/phpunit或~/.composer/vendor/bin/phpunit);若未检测到,可手动指定路径。Use configuration file,指定项目根目录下的phpunit.xml配置文件路径(后续步骤会创建)。OK保存配置。3. 创建测试目录与测试用例
在项目根目录下创建tests目录(用于存放所有测试文件,符合PHPUnit约定)。新建测试类文件(如ExampleTest.php),内容需继承PHPUnit\Framework\TestCase,且测试方法以test开头:
<?php
use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
{
public function testExample()
{
$this->assertTrue(true); // 断言示例:验证true等于true
}
public function testAddition()
{
$this->assertEquals(4, 2 + 2); // 断言示例:验证2+2等于4
}
}
测试类命名需遵循类名Test.php规则(如UserModelTest.php对应UserModel类)。
4. 编写phpunit.xml配置文件
在项目根目录下创建phpunit.xml文件,定义测试套件、白名单等配置(示例):
<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="vendor/autoload.php" colors="true">
<testsuites>
<testsuite name="Default Test Suite">
<directory suffix="Test.php">./tests</directory> <!-- 测试文件目录及后缀 -->
</testsuite>
</testsuites>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">./src</directory> <!-- 被测试代码目录(白名单) -->
</directory>
</filter>
</phpunit>
bootstrap:指定项目自动加载文件(如Composer生成的vendor/autoload.php),确保测试时能加载项目类。testsuites:定义测试套件,指定测试文件所在目录及命名规则(如suffix="Test.php"表示以Test.php结尾的文件)。filter:设置被测试代码的白名单(如src目录下的.php文件),用于生成测试覆盖率报告。5. 运行单元测试
PhpStorm提供多种运行测试的方式:
Run 'testMethodName()'(如Run 'testAddition()')。ExampleTest.php),选择Run 'ExampleTest'。tests目录,选择Run 'All Tests';或在PhpStorm顶部工具栏点击绿色三角形按钮,从下拉列表中选择PHPUnit配置。Run工具窗口中,包含通过/失败的测试数量、执行时间及错误详情(如断言失败的具体信息)。6. 调试单元测试
若测试失败或需要排查问题,可使用PhpStorm的调试功能:
Debug 'testMethodName()'(如Debug 'testAddition()')。注意事项
File > Settings > PHP,选择正确的解释器)。vendor/autoload.php文件存在(运行composer install生成)。phpunit.xml中配置覆盖率输出(如<logging><coverage>),通过Run工具窗口查看代码覆盖率报告。