温馨提示×

在Ubuntu上如何使用PHPStorm进行单元测试

小樊
41
2025-12-28 15:10:03
栏目: 编程语言

在 Ubuntu 上使用 PhpStorm 进行 PHPUnit 单元测试

一 环境准备

  • 安装 PHP 与 Composer(示例为 Ubuntu 20.04+):
    • sudo apt update && sudo apt install -y php-cli php-xdebug composer
  • 在项目根目录安装 PHPUnit(推荐作为开发依赖):
    • composer require --dev phpunit/phpunit
  • 创建基础目录与示例测试:
    • mkdir -p tests
    • 示例文件 tests/ExampleTest.php:
      • assertTrue(true); } }
  • 说明:PhpStorm 已内置对 PHPUnit 的支持,可直接在 IDE 内运行与调试测试。

二 在 PhpStorm 中配置 PHP 与 PHPUnit

  • 配置 CLI 解释器:
    • 打开 File > Settings > Languages & Frameworks > PHP > CLI Interpreter,点击 +,选择 Add Local,指定 PHP 可执行文件路径(如 /usr/bin/php)。
  • 配置测试框架:
    • 打开 Settings > Languages & Frameworks > PHP > Test Frameworks,点击 +,选择 PHPUnit Local
    • 选择 Use Composer autoloader,指向项目根目录的 vendor/autoload.php;点击 Validate 校验,看到 “PHPUnit has been successfully configured” 即完成。
  • 可选 使用 WSL 或 Docker:
    • WSL:在 CLI Interpreter 选择 From Docker, Vagrant, VM, WSL, Remote… > WSL,按向导选择发行版与 PHP 路径;随后在 PHPUnit 配置中同样选择 PHPUnit by Remote Interpreter
    • Docker:选择 Docker,指定镜像后在 PHPUnit 中选择 PHPUnit by Remote Interpreter

三 运行与调试测试

  • 运行测试:
    • Project 视图或编辑器中右键测试类/方法,选择 Run ‘ClassName’Run ‘testMethod’;结果在 Run 工具窗口展示(通过/失败、断言信息、堆栈等)。
  • 调试测试:
    • 在测试代码中设置断点,右键选择 Debug ‘ClassName’/‘testMethod’;结合 Xdebug 可单步、观察变量与表达式。
  • 覆盖率:
    • 使用工具栏的 Run ‘ClassName’ with Coverage 运行,可生成并查看 代码覆盖率 报告。

四 常用配置与排错

  • 使用 phpunit.xml 管理配置(项目根目录):
    • 示例 phpunit.xml:
      • ./tests ./src
    • 说明:该文件用于指定 bootstrap测试目录白名单 等;PhpStorm 会自动识别并在运行测试时使用。
  • Xdebug 3 配置要点(如计划使用覆盖率/断点调试):
    • 在 CLI 使用的 php.ini(如 /etc/php/8.1/cli/php.ini)添加:
      • zend_extension=xdebug.so
      • xdebug.mode=debug
      • xdebug.start_with_request=yes
      • xdebug.client_host=127.0.0.1
      • xdebug.client_port=9003
    • 在 PhpStorm 的 Settings > PHP > Debug 确认调试端口为 9003,并确保 CLI 与 Web 环境使用一致的 Xdebug 配置。
  • 常见问题排查:
    • Validate 失败:确认 vendor/autoload.php 存在且 PHPUnit 已安装到 vendor/;如使用全局 PHPUnit,需改为 PHPUnit by Remote Interpreter 或安装到项目本地。
    • 找不到 PHP 可执行文件:在 CLI Interpreter 中手动定位 /usr/bin/php 或使用 WSL/Docker 解释器。
    • 覆盖率或断点无效:检查 Xdebug 是否启用、端口是否被占用、运行配置是否选择了正确的解释器与测试框架。

0