找不到类PHPUnit\Framework\ExpectationFailedException

找不到类PHPUnit\Framework\ExpectationFailedException,phpunit,zend-framework3,zend-test,Phpunit,Zend Framework3,Zend Test,当我尝试使用此命令运行失败的测试时: /vendor/bin/phpunit 我得到这个致命错误: PHPUnit 5.7.20 by Sebastian Bergmann and contributors. PHP Fatal error: Class 'PHPUnit\Framework\ExpectationFailedException' not found in /var/www/zend/vendor/zendframework/zend- test/src/PHPUnit/C

当我尝试使用此命令运行失败的测试时:
/vendor/bin/phpunit
我得到这个致命错误:

PHPUnit 5.7.20 by Sebastian Bergmann and contributors.

PHP Fatal error:  Class 'PHPUnit\Framework\ExpectationFailedException' 
not found in /var/www/zend/vendor/zendframework/zend-
test/src/PHPUnit/Controller/AbstractControllerTestCase.php on line 444

您的phpunit版本对于您的Zend版本来说可能太旧了。类
PHPUnit\Framework\ExpectationFailedException
已在PHPUnit 6.X中从
PHPUnit\u Framework\u ExpectationFailedException
重命名为
ExpectationFailedException


请检查您的PhpUnit版本:
PhpUnit--version
,它应该是6.X。将其更新到最新版本以避免此错误。

这是zend测试中的一个配置缺陷。它使用Phpunit 6中的类,但根据其编写器的要求:

由于PHP版本不满足Phpunit 6的要求,您的系统很可能安装了下一个较低版本

由于基本测试用例()中的代码使用了Phpunit 6类,我强烈认为,当Zend测试项目意识到配置缺陷时,您将无法再在系统上安装

因此,请升级到最新的PHP版本,然后运行

composer update
如果您不熟悉PHP版本,请将zend test降级为支持旧版本Phpunit的版本。我不太了解那个项目,所以这只是一个建议,我不知道是否存在这样一个版本,或者甚至不能推荐一个

我提交了一份报告,可能是使用了一个类作为疏忽,或者有一种不太难的方法来解决依赖关系:

这是由Zend\Test中名为
phpunit class aliases.php的脚本“修复”的,但是它没有在IMHO中正确配置,因为它位于
autoload dev
部分(这意味着它不会传播到其他项目。)

因此,在project composer.json中,执行以下操作:

"autoload-dev": {
    "files": [
        "vendor/zendframework/zend-test/autoload/phpunit-class-aliases.php"
    ]
},
然后
composer安装


N.B.
Zend\Test
有一个pull请求修复了这个问题,但是他们说这是PHPUnit的错(为你PHPUnit 4感到羞耻,因为…idunno…根据Zend\Test有错误的类名)因此,我改为:
composer需要illchuk/phpunit类别名

问题是phpunit 6.X不能与PHP5一起使用。X您是否尝试删除供应商文件夹并重新开始?不是以root(!):
$rm-rf./vendor&&composer安装
"autoload-dev": {
    "files": [
        "vendor/zendframework/zend-test/autoload/phpunit-class-aliases.php"
    ]
},