推荐使用 composer require --dev phpunit/phpunit 安装 PHPUnit,PHP 7.4 项目用 ^9.6,8.0+ 用 ^10.5;phpunit.xml 必须放在项目根目录且含 bootstrap="vendor/autoload.php";务必通过 ./vendor/bin/phpunit 运行。

直接装 phpunit 不用单独配 Composer —— 它早就是 Composer 包了,但错装成全局或版本不匹配,测起来反而报错更频繁。
为什么 composer require --dev phpunit/phpunit 是唯一推荐方式
本地项目依赖必须走 --dev,否则生产环境可能意外加载测试代码;phpunit 从 9.x 起不再支持 PHP 7.3 以下,而很多老项目还卡在 PHP 7.4,硬装最新版会直接 composer install 失败。
- PHP 7.4 项目 → 用
composer require --dev phpunit/phpunit:^9.6 - PHP 8.0+ 项目 → 可用
composer require --dev phpunit/phpunit:^10.5 - 别跑
composer global require phpunit/phpunit—— 全局安装会导致vendor/bin/phpunit找不到项目里自定义的phpunit.xml
phpunit.xml 文件放哪、写什么才生效
PHPUnit 默认只认项目根目录下的 phpunit.xml 或 phpunit.xml.dist;名字错一个字母、多一个空格,它就静默回退到默认行为(比如只扫 tests/ 下的 *Test.php,却忽略你写的 src/ 测试)。
- 必须放在和
composer.json同级的目录 - 最简可用配置只需三行:
<?xml version="1.0" encoding="UTF-8"?> <phpunit bootstrap="vendor/autoload.php"> <testsuites><testsuite name="default"><directory>tests</directory></testsuite></testsuites> </phpunit>
- 别删
bootstrap="vendor/autoload.php"—— 没这句,use App\Test\SomeClass会报Class not found
运行时常见报错和对应解法
Class 'PHPUnit\Framework\TestCase' not found:不是没装 PHPUnit,是 vendor/autoload.php 没被正确引入,或者用了错误的启动方式。
立即学习“PHP免费学习笔记(深入)”;
- 永远用
./vendor/bin/phpunit启动,别用phpunit(那是全局命令) - 如果提示
Command not found,先确认vendor/bin/是否存在,再跑一次composer install -
Cannot declare class X, because the name is already in use:通常是你在tests/里手动require了某个文件,和 autoloader 冲突,删掉手写的require
真正卡住人的地方,往往不是不会写断言,而是 phpunit.xml 少了个斜杠、composer require 漏了 --dev、或者误以为全局装一次就能一劳永逸。这些细节不盯住,跑十次 phpunit 都在重复同一个底层错误。











