应执行composer require --dev phpunit/phpunit,因其是官方唯一维护入口;加--dev确保仅作开发依赖;命令需用./vendor/bin/phpunit或配置PATH;版本须匹配PHP与框架要求,装后需验证版本及测试运行。

直接装 PHPUnit 就行,别碰 phpunit/phpunit 以外的包
Composer 安装 PHPUnit 的核心动作就是运行一条命令,但很多人卡在选错包名或装到全局。实际项目里,你应该只执行:
composer require --dev phpunit/phpunit。这个包名是官方唯一维护的入口,其他像
phpunit/phpunit-skeleton-generator 或旧版 phpunit(无命名空间)早已废弃,装了不仅没用,还会和新版冲突。
为什么加 --dev?不加会进生产环境
PHPUnit 是开发期依赖,不是运行时需要的。不加 --dev 会导致它被写进 require 而非 require-dev,上线部署时可能被意外安装,浪费资源还增加攻击面。另外,composer install 默认跳过 require-dev(除非加 --dev 或没设 COMPOSER_NO_DEV=1),所以加 --dev 是安全习惯。
phpunit 命令找不到?检查 bin 目录和 PATH
装完后运行 phpunit 报“command not found”,不是没装成功,而是没找到可执行文件。Composer 把二进制放到了 vendor/bin/phpunit,你需要:
- 直接运行
./vendor/bin/phpunit(推荐,明确、无歧义) - 或者把
vendor/bin加进 shell 的PATH(适合频繁使用,但 CI 环境通常不这么做) - 别用
composer exec phpunit—— 它慢、绕路,且某些插件会干扰 autoload
版本选哪个?看 PHP 和项目需求,别默认 latest
PHPUnit 10 要求 PHP 8.1+,9.x 支持 PHP 7.3–8.2,8.x 已停止维护。如果你项目还在用 PHP 7.4,composer require --dev phpunit/phpunit:^9 才对;盲目跑 composer require --dev phpunit/phpunit 可能拉下 v10,然后测试全挂。另外,Laravel 10 默认适配 PHPUnit 10,但 Laravel 9 仍常用 9.5.x —— 版本不匹配时,setUp() 或数据提供器(@dataProvider)容易报奇怪的反射错误。
立即学习“PHP免费学习笔记(深入)”;
最常被忽略的是:装完不验证 phpunit --version,也不跑个空测试确认 autoload 是否正常。有些项目 autoload-dev 配置漏了 tests/ 目录,结果命令能跑,但一执行就报 Class 'Tests\TestCase' not found —— 这类问题和 Composer 安装本身无关,但总被误认为“装失败了”。











