paratest是专为PHPUnit设计的成熟并行测试工具,支持PHP 8.5,需通过composer安装并配置phpunit.xml,运行时指定进程数及数据库隔离策略以实现高效并行测试。

安装并行测试工具 paratest
PHPUnit 本身不支持原生并行执行,PHP 8.5 下想提速必须引入第三方工具。最成熟、兼容性最好的是 paratest,它专为 PHPUnit 设计,能自动将测试用例分发到多个 PHP 进程中运行。
在项目根目录执行:
composer require --dev brianium/paratest- 确认 PHPUnit 已安装(
composer require --dev phpunit/phpunit),且版本 ≥ 9.6(适配 PHP 8.5)
配置 phpunit.xml 支持并行运行
paratest 默认读取 phpunit.xml,但需确保配置不含破坏并行性的设置。重点检查以下几点:
- 移除或注释掉
<filter>中的<whitelist>(旧版写法),改用<coverage>配置(如需覆盖率) - 确保
bootstrap指向正确的自动加载文件,例如vendor/autoload.php - 测试目录结构清晰:
<directory>tests</directory>,避免跨目录混杂
运行并行测试并调优参数
使用 paratest 命令替代原 phpunit,基础命令如下:
立即学习“PHP免费学习笔记(深入)”;
-
vendor/bin/paratest --php-version=8.5 --processes=4(指定 4 个进程,通常设为 CPU 核心数) -
--passthru-php="--enable-dynamic-loading"可解决某些扩展加载问题 -
--colors=always --verbose便于调试失败用例归属哪个进程 - 若测试含数据库操作,务必使用
sqlite:memory:或为每个进程分配独立 DB 名(如test_db_{process_id})
进一步提速的关键实践
并行只是加速手段之一,真正提升效率还需配合代码与结构优化:
- 用
@group unit标记纯单元测试,配合--group unit跳过集成测试 - 所有外部依赖(HTTP、DB、文件)必须 mock,避免 I/O 成为瓶颈
- 避免在
setUp()中做重操作;改用setUpBeforeClass()共享只读资源 - 定期清理
var/cache/test类缓存目录,防止 autoload 冗余扫描



















