必须按php版本安装对应phpunit:php 7.4/8.0用^9.6,8.1+用^10.5,8.2+可试^11.0;务必通过./vendor/bin/phpunit运行,配置phpunit.xml指定tests目录并正确设置autoload-dev。

直接运行 composer require --dev phpunit/phpunit 就行,但版本必须和 PHP 对得上
装 PHPUnit 不是“能不能装”,而是“装对不对”。composer install 根本不会自动装它,除非 composer.json 里已有声明;很多人卡在 Class 'PHPUnitFrameworkTestCase' not found,其实只是版本错配或压根没装成功。
- PHP 7.4 或 8.0 → 运行
composer require --dev phpunit/phpunit:^9.6 - PHP 8.1+(比如 Laravel 10+)→ 用
composer require --dev phpunit/phpunit:^10.5 - PHP 8.2+ 且无框架约束 → 可试
composer require --dev phpunit/phpunit:^11.0,但注意phpunit-skeleton-generator已彻底移除,别装它 - 不指定版本时,Composer 默认拉最新稳定版,可能直接装上 v11 却跑在 PHP 8.1 上,报错:
Declaration of PHPUnitFrameworkTestCase::setUp(): void must be compatible
./vendor/bin/phpunit 是唯一可靠入口,别信全局安装或直接敲 phpunit
Composer 从不把命令加进系统 $PATH,它只放 vendor/bin/ 下。你敲 phpunit 报 command not found 是必然的,不是环境问题,是设计如此。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- Linux/macOS 必须用
./vendor/bin/phpunit - Windows 用
vendorinphpunit(注意反斜杠) - 全局安装(
composer global require phpunit/phpunit)会导致不同项目 PHPUnit 版本冲突,CI 脚本也会失败——因为 CI 环境通常不把~/.composer/vendor/bin加入PATH - 想省事?在
composer.json的scripts里加一条:"test": "phpunit",之后就能跑composer test
没配 phpunit.xml,./vendor/bin/phpunit 基本等于白跑
默认行为只扫当前目录下 *Test.php 文件,而真实项目测试都在 tests/ 目录。不配配置文件,就会看到 No tests executed——不是没写测试,是根本没找到。
- 在项目根目录新建
phpunit.xml,至少包含三件事:bootstrap="vendor/autoload.php"、<directory>tests</directory>、<testsuite name="default"></testsuite> - 路径是相对
phpunit.xml的,别写成绝对路径;新版 PHPUnit(9.6+)默认忽略 DTD 声明,写了反而可能触发解析错误 - 如果测试类不以
Test.php结尾(比如叫CalculatorSpec.php),就得在<filter></filter>里显式声明后缀
autoload-dev 没配对,TestCase 就永远找不到
类找不到,90% 不是 PHPUnit 没装好,是 Composer 的自动加载没覆盖到你的测试目录。IDE 右键 Run 失败、composer dump-autoload 后仍报错,基本都栽在这儿。
- 确认
composer.json中有这段:"autoload-dev": { "psr-4": { "Tests\": "tests/" } } - 改完
autoload-dev后必须运行composer dump-autoload,否则新映射不生效 - 测试类必须用
use PHPUnitFrameworkTestCase;,不能写老式的extends PHPUnit_Framework_TestCase - 确保 PHP 启用了
ext-dom和ext-xml扩展,否则连DOMDocument都找不到,直接崩在启动阶段
composer dump-autoload 和检查 phpunit.xml 路径是否真能命中 tests/ ——这两步一漏,所有报错看起来都像 PHPUnit 本身有问题。php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










