Magento 2.2.3执行编译命令时出现PHPUnit类未找到错误
解决Magento 2.2.3执行
php bin/magento setup:di:compile时的PHPUnit类找不到错误 这个坑我之前部署Magento 2.2.x版本时也踩过,本质是PSR Log扩展包里的测试文件被Magento的DI编译进程误扫描到,但你的环境里没装PHPUnit(或者全局PHPUnit版本不匹配、路径不对),导致找不到PHPUnit_Framework_TestCase类。下面是几个亲测有效的解决办法:
办法1:安装对应版本的PHPUnit作为开发依赖
Magento 2.2.3适配的PHPUnit版本是~6.2,直接用composer安装即可:
composer require --dev phpunit/phpunit:~6.2
安装完成后重新执行编译命令,就能正常找到测试基类了。这个办法适合需要保留测试文件的场景,比如之后要做单元测试的话。
办法2:临时移除PSR Log的测试目录
如果你的环境不需要保留测试文件,最快的解决方式就是直接删掉触发错误的测试目录:
rm -rf vendor/psr/log/Psr/Log/Test/
删除后重新执行php bin/magento setup:di:compile,编译进程就不会扫描到这个测试文件,自然也就不会触发错误了。如果之后需要恢复这个目录,重新执行composer install即可。
办法3:修改Magento的DI编译排除规则(进阶)
如果你不想删除文件也不想装PHPUnit,可以修改Magento的编译配置,让它跳过测试目录:
- 打开
app/etc/di.xml - 在
<config>节点下添加以下配置:
<type name="Magento\Framework\Code\Generator\Io"> <arguments> <argument name="excludePatterns" xsi:type="array"> <item name="psr-log-test" xsi:type="string">/Psr/Log/Test/</item> </argument> </arguments> </type>
保存后重新执行编译命令,就能排除测试目录的扫描了。不过这个办法需要修改核心配置文件,升级Magento时记得备份。
内容的提问来源于stack exchange,提问作者Jigar Prajapati
相关产品推荐
相关产品推荐

