在 Debian 上用 PhpStorm 做 PHPUnit 单元测试
一 环境准备
- 安装 PHP 与调试扩展(Debian 常用命令,按你的版本调整包名):
- sudo apt update && sudo apt install -y php php-cli php-xdebug
- 安装 Composer(全局):
- curl -sS https://getcomposer.org/installer | php
- sudo mv composer.phar /usr/local/bin/composer
- 安装 PHPUnit(推荐作为项目开发依赖,便于版本与团队一致):
- 进入项目根目录执行:composer require --dev phpunit/phpunit
- 如需全局命令也可:composer global require phpunit/phpunit,并把 $HOME/.composer/vendor/bin 加入 PATH
- 验证安装:
- php -v、phpunit --version、composer --version 均应输出版本号
二 在 PhpStorm 中配置 PHPUnit
- 设置 PHP 解释器:File → Settings → Languages & Frameworks → PHP,选择或新增 CLI Interpreter(指向 /usr/bin/php),点击同步/验证,确保能解析到 Composer 的 vendor/autoload.php
- 注册测试框架:Settings → Languages & Frameworks → PHP → Test Frameworks
- 点击 + → PHPUnit Local,选择 Use Composer autoloader,指向项目根目录的 vendor/autoload.php
- 如需使用 PHAR,可选择 Use PHPUnit PHAR 并指定 phpunit.phar 路径
- 创建运行配置:Run → Edit Configurations → + → PHPUnit
- Test kind 常用两种:
- All in directory:Directory 选 tests
- Class/Method:指定要运行的测试类或方法
- 保存后即可点击工具栏绿色运行按钮执行
三 编写与运行测试
- 生成测试:在目标类使用 Navigate → Go to Test(或 Ctrl+Shift+T / Cmd+Shift+T)创建测试,选择 PHPUnit 模板,自动生成 YourClassTest.php
- 命名与断言示例:
- 测试类继承 PHPUnit\Framework\TestCase
- 测试方法为 public,以 test 开头,或用 @test 注解
- 使用断言如 assertEquals、assertTrue 等
- 运行与查看结果:
- 单个测试类/方法:在测试文件内右键 Run ‘ClassNameTest’ 或 Run ‘testMethod’
- 整个目录:使用前述运行配置(Test kind = All in directory)
- 结果在 Run 工具窗口展示,可点击失败项定位到代码行
四 覆盖率与调试
- 覆盖率:Run → Edit Configurations → 你的 PHPUnit 配置,勾选 Coverage,运行后在 Run 窗口或 Project 工具窗口查看覆盖率报告(行/分支覆盖)
- 调试测试:在测试方法中设置断点,使用 Debug 运行;确保已安装并启用 Xdebug,PhpStorm 会在断点处中断,便于逐步排查
五 常见问题与排查
- 找不到 PHPUnit:优先使用 Composer autoloader;若用 PHAR,确认路径与权限正确
- 单个文件无法运行:确认运行配置为 Class/Method 并选择了正确类/方法,或改用目录级运行
- 类/方法无法识别:在 PHP → Test Frameworks 中重新指向 vendor/autoload.php,并触发 Sync;必要时重启 IDE
- 命令不存在:检查 phpunit 是否在 PATH,或改用项目内的 vendor/bin/phpunit
- 断点不生效:确认已安装 Xdebug 并在 php.ini 中启用,且以 Debug 模式运行测试