php 8.1 项目可安全接入 phpunit 10,需确保 php ≥ 8.1、使用 composer require --dev phpunit/phpunit:^10.5、配置 phpunit.xml 指定 bootstrap 和 tests 目录,并遵循 test 类名/文件名约定及 : void 返回类型。

PHP 8.1 项目接入 PHPUnit 10 是完全可行且推荐的组合,关键在于版本对齐、路径规范和配置落地。PHPUnit 10 要求 PHP ≥ 8.1,正好匹配你的运行环境,能用上更现代的类型提示、枚举支持和精简的 API,但必须避开 v9 的遗留写法和已移除组件。
确认 PHP 版本并安装对应 PHPUnit
先执行 php -v 确认输出为 PHP 8.1.x(如 8.1.28)。不是 8.0 或 8.2 —— 版本错配是“Class not found”类错误的主因。
- 运行:composer require --dev phpunit/phpunit:^10.5(不加
^11.0,它需 PHP 8.2+) - 装完检查:./vendor/bin/phpunit --version 应显示 10.5.x
- 别用
composer global require,全局安装无法加载项目级 autoload 和配置
创建最小可用 phpunit.xml 配置
没配置文件,PHPUnit 默认扫描当前目录下所有 *Test.php,极易误扫 vendor 或临时文件,导致“No tests executed”或报错。
- 在项目根目录新建 phpunit.xml,内容只需三行核心:
- bootstrap="vendor/autoload.php" 确保测试类能自动加载 src/ 下的代码
-
tests 锁定扫描范围,避免漏测或误测 - 无需写
<filter></filter>或<coverage></coverage>,起步阶段保持极简
按约定结构组织代码与测试
PHPUnit 10 默认只识别以 Test 结尾的类名和文件名,且要求继承 PHPUnit\Framework\TestCase。
- 源码放 src/Calculator.php:
class Calculator { public function add(int $a, int $b): int { return $a + $b; } } - 测试放 tests/CalculatorTest.php:
use PHPUnit\Framework\TestCase;
class CalculatorTest extends TestCase {
public function testAddReturnsSumOfTwoNumbers(): void {
$calc = new Calculator();
$this->assertEquals(5, $calc->add(2, 3));
}
} - 方法名必须以
test开头,或加@test注解;返回类型声明: void是 PHPUnit 10 强制要求
执行测试的正确方式
永远通过 ./vendor/bin/phpunit 运行(Windows 用 vendor\bin\phpunit),这是唯一能读取项目配置和 autoload 的入口。
- 跑全部测试:./vendor/bin/phpunit
- 跑单个文件:./vendor/bin/phpunit tests/CalculatorTest.php
- 指定配置(如有多个 xml):./vendor/bin/phpunit -c phpunit.xml
- CI 环境加 --no-coverage,避免因缺 xdebug 报错
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











