PHPUnit命令运行不了是因为Composer默认将其安装在vendor/bin/下,需用./vendor/bin/phpunit调用;应配置autoload-dev实现自动加载,按PHP版本选择对应PHPUnit版本,并确保phpunit.xml中bootstrap和directory路径正确。
直接在项目里用 composer require --dev phpunit/phpunit 就能装好 PHPUnit,但实际跑起来常卡在 autoload、配置或版本冲突上——不是找不到 TestCase 类,就是 phpunit 命令报错“command not found”。
为什么 phpunit 命令运行不了?
Composer 默认把可执行文件装到 vendor/bin/ 下,而不是全局 PATH。你执行 phpunit 时系统根本找不到它。
- ✅ 正确做法:用
./vendor/bin/phpunit(Linux/macOS)或vendor\bin\phpunit(Windows)调用 - ⚠️ 别手动加
vendor/bin到系统 PATH —— 这会让不同项目的 PHPUnit 版本互相干扰 - ? 想省事?在
composer.json的"scripts"里加一条:"test": "phpunit",然后运行composer test
怎么让 PHPUnit 自动加载测试类?
PHPUnit 不会自动扫描任意目录;它依赖 composer.json 中的 autoloading 配置,或者自己指定 --bootstrap 文件。
- ✅ 推荐方式:在
composer.json里声明测试类的 PSR-4 自动加载路径,例如:
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
}
然后运行 composer dump-autoload 生效。这样 Tests\TestCase 就能被正常解析。