正确做法是用 composer require --dev phpunit/phpunit 将 PHPUnit 安装到 require-dev;需匹配 PHP 版本选 PHPUnit 版本;配置 phpunit.xml 指定 tests 目录和 bootstrap;必须通过 vendor/bin/phpunit 执行。

Composer 管理 PHPUnit 依赖不需要“教程式安装”,关键在于区分项目类型和使用场景:是只运行测试,还是参与开发?是否要避免污染生产环境?答案直接决定命令和配置写法。
composer require 是最常用但最容易误用的方式
很多人直接执行 composer require phpunit/phpunit,结果把 PHPUnit 装进 require(生产依赖),这会导致线上部署时多出不必要的包,还可能引发自动加载冲突。
- 正确做法是加
--dev标志:composer require --dev phpunit/phpunit - 这样会写入
require-dev区块,仅在本地或 CI 环境生效 - 若已误装进
require,先运行composer remove phpunit/phpunit,再用--dev重装 - 注意 PHP 版本兼容性:PHPUnit 10 要求 PHP 8.1+,9.x 支持到 PHP 7.3;查清项目 PHP 版本再选版本,比如 PHP 7.4 应用
composer require --dev phpunit/phpunit:^9.6
phpunit.xml 配置文件不是必须的,但没它容易跑错目录或忽略测试
不配 phpunit.xml 时,PHPUnit 默认从当前目录找 *Test.php 文件,并递归扫描所有子目录——这常导致加载非测试类、重复执行或跳过 tests/ 外的用例。
- 最小可用配置只需指定测试目录:
tests -
bootstrap属性确保 Composer 自动加载器就绪,否则自定义类可能报Class not found - 如果测试类命名不规范(如没以
Test结尾),需在或中显式声明
vendor/bin/phpunit 是唯一推荐的执行入口
别用全局安装的 phpunit 命令,它版本不可控,且不读取当前项目的 phpunit.xml 和 autoload.php。
立即学习“PHP免费学习笔记(深入)”;
- 始终用
./vendor/bin/phpunit(Linux/macOS)或vendor\bin\phpunit(Windows) - 可加
-c指定配置:./vendor/bin/phpunit -c phpunit.xml - 想快速验证单个文件?
./vendor/bin/phpunit tests/ExampleTest.php,它会自动加载该文件及依赖 - CI 场景下建议加
--no-coverage避免因缺少 xdebug 导致失败
真正麻烦的不是装不上 PHPUnit,而是测试启动后报 Class 'PHPUnit\Framework\TestCase' not found 或找不到你的业务类——这类问题 90% 出在 bootstrap 路径错误、autoload 规则没覆盖测试目录,或者 require-dev 里混进了不该有的包。检查顺序建议:确认 vendor/autoload.php 存在 → 验证 phpunit.xml 中 bootstrap 路径是否正确 → 运行 composer dump-autoload -o 强制刷新映射。











