2017-06-20 71 views
2

当我尝试使用以下命令运行失败的测试: ./vendor/bin/phpunit 我得到这个致命错误:类的PHPUnit 框架 ExpectationFailedException没有找到

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 
+0

您是否尝试删除供应商文件夹并重新开始?不是root(!):'$ rm -rf ./vendor &&作曲者安装' – hakre

回答

3

这是“固定”之称phpunit-class-aliases.php但它的配置不正确恕我直言,因为它是在autoload-dev部分(这意味着它不会传播到其他项目。)

所以,在你的项目composer.json,做这样的事情:

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

Then composer install

N.B. Zend\Test有一个拉动请求来解决这个问题,但是他们说它是PHPUnit的错(对你来说PHPMitUnit 4的耻辱... idunno ...根据Zend \ Test错误的类名)所以,我已经完成了它改为:composer require illchuk/phpunit-class-aliases

3

您的PHPUnit的版本可能是太旧了您的版本Zend的。类PHPUnit\Framework\ExpectationFailedException已经PHPUnit中6.X被重命名从PHPUnit_Framework_ExpectationFailedExceptionExpectationFailedException

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

+0

问题是phpunit 6.X不能使用php 5.X –

3

这是zend-test中的配置缺陷。它消耗类出自PHPUnit 6,但每它的作曲要求,Phpunit before that version are OK to require

"phpunit/phpunit": "^4.0 || ^5.0 || ^6.0", 

最有可能为你的,因为PHP版本的系统不能满足的PHPUnit 6的要求,下一个较低的版本安装。由于基本测试用例(https://github.com/zendframework/zend-test/blob/master/src/PHPUnit/Controller/AbstractControllerTestCase.php#L444)中的代码使用Phpunit 6类,所以我强烈地认为当配置缺陷知道Zend-Test项目时,您甚至无法安装你的系统不再。

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

composer update 

如果你STUK使用的PHP版本,降级Zend的测试,以支持一个旧的PHPUnit版本的版本。我不太了解这个项目,所以这只是一个建议,我不知道这样的版本是否存在或甚至不能推荐。

我提交了一份报告,也许是使用一类是疏忽还是有解决的依赖不太硬的方式:通过Zend的\测试脚本https://github.com/zendframework/zend-test/issues/50