phpunit 命令需用 ./vendor/bin/phpunit 调用;TestCase 找不到是因 autoload-dev 未配置或未运行 composer dump-autoload;数据库错误源于驱动未启用或未用 SQLite 内存模式。
Composer 安装 PHPUnit 后,命令找不到、测试类无法自动加载、或报错 —— 这些不是安装失败,而是 autoloader 和配置没对上。
为什么
命令在终端里直接报“command not found”
全局安装早就不推荐了,现在默认走
。Composer 只会把二进制文件放进项目本地的
,不会加到系统
里。
运行测试必须用
(Linux/macOS)或
(Windows)
想偷懒?在
的
里加一条:
,之后就能跑
别手动把
加进
—— 换个项目就失效,还可能和全局旧版本冲突
找不到
这是 autoloader 没覆盖测试目录,或者 PHPUnit 版本和写法不匹配。v9+ 强制要求 namespaced 类,且默认不加载
目录。
确认
里有 autoload-dev 配置,例如:
运行
刷新映射(改完 autoload 后必做)
测试类必须用
,不能用老式的
如果用了
参数,确保那个 bootstrap 文件本身没抛错(比如提前 require 了未安装的库)
测试执行时提示
或数据库连接失败
PHPUnit 本身不处理数据库驱动,但你的测试代码里如果 new PDO 或调用了 Laravel/Doctrine 的测试工具,就会暴露环境缺失问题。
Composer 2.9.6
Composer 2.9.6 是 PHP 生态中高效、稳定的依赖管理工具。此版本在性能与兼容性上进一步优化,改进了依赖解析算法,提升大型项目中的安装与更新速度。它支持并行下载任务,显著减少等待时间,并增强了与私有仓库及镜像源的交互稳定性。同时修复了多项命令行交互与内存使用相关的缺陷,确保在复杂依赖关系下依然可靠运行。无论是新项目初始化还是现有系统维护,Composer 2.9.6 都能为开发者提供流畅、精准的依赖管理体验。
下载
立即学习
“
PHP免费学习笔记(深入)
”;
检查
,确认
(最轻量)或对应驱动已启用
测试中创建数据库连接,优先用 SQLite 内存模式:
,避免依赖外部服务
不要在
里硬连真实 MySQL —— CI 环境通常没开 3306 端口,也别指望测试服务器装了 Redis
用
这类标注跳过不满足条件的测试,比让整个 suite 报错更可控
最常被跳过的其实是
这一步 —— 改完命名空间或目录结构后不重生成 autoload,错误信息看着像 PHPUnit 问题,其实只是类根本没注册进 autoloader。
phpunitTestCasephpunitvendor/bin/phpunitvendor/bin/$PATH./vendor/bin/phpunitvendorinphpunitcomposer.jsonscripts"test": "phpunit"composer testvendor/bin$PATHClass 'PHPUnitFrameworkTestCase'tests/composer.json"autoload-dev": {
"psr-4": {
"Tests\": "tests/"
}
}composer dump-autoloaduse PHPUnitFrameworkTestCase;extends PHPUnit_Framework_TestCase--bootstrapCould not find driverphp -m | grep pdopdo_sqlitenew PDO('sqlite::memory:') setUp()@requires extension sqlite3composer dump-autoload