class PHPUnit\Framework\ExpectationFailedException 未找到
class PHPUnit\Framework\ExpectationFailedException not found
当我尝试使用此命令 运行 失败的测试时:
./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 版本来说可能太旧了。 class PHPUnit\Framework\ExpectationFailedException
在 PhpUnit 6.X 中从 PHPUnit_Framework_ExpectationFailedException
重命名为 ExpectationFailedException
请检查您的 PhpUnit 版本:phpunit --version
,应该是 6.X。更新到最新版本可以避免这个错误。
这是 zend-test 中的配置缺陷。它使用来自 Phpunit 6 的 classes,但根据 Composer 的要求,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 classes,我强烈认为当 Zend-Test 项目意识到配置缺陷时,您甚至无法再在您的系统上安装。
因此升级到最近的 PHP 版本然后 运行
composer update
如果您对 PHP 版本不满意,请将 zend-test 降级到支持旧 Phpunit 版本的版本。对那个项目不是很了解,所以只是一个建议,不知道有没有这样的版本,也不推荐。
我提交了一份报告,也许使用那个 class 是一个疏忽,或者有一个更简单的方法来解决依赖关系:https://github.com/zendframework/zend-test/issues/50
这是 "fixed" 由 Zend\Test 中名为 phpunit-class-aliases.php
的脚本编写的,但恕我直言,它没有正确配置,因为它位于 autoload-dev
部分(意味着它不会传播到其他项目。)
因此,在您的项目 composer.json 中,执行如下操作:
"autoload-dev": {
"files": [
"vendor/zendframework/zend-test/autoload/phpunit-class-aliases.php"
]
},
然后composer install
N.B。 Zend\Test
有一个解决这个问题的拉取请求,但他们说这是 PHPUnit 的错(PHPUnit 4 真可耻,因为......我不知道......根据 Zend\Test) 所以,我已经做到了:composer require illchuk/phpunit-class-aliases
当我尝试使用此命令 运行 失败的测试时:
./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 版本来说可能太旧了。 class PHPUnit\Framework\ExpectationFailedException
在 PhpUnit 6.X 中从 PHPUnit_Framework_ExpectationFailedException
重命名为 ExpectationFailedException
请检查您的 PhpUnit 版本:phpunit --version
,应该是 6.X。更新到最新版本可以避免这个错误。
这是 zend-test 中的配置缺陷。它使用来自 Phpunit 6 的 classes,但根据 Composer 的要求,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 classes,我强烈认为当 Zend-Test 项目意识到配置缺陷时,您甚至无法再在您的系统上安装。
因此升级到最近的 PHP 版本然后 运行
composer update
如果您对 PHP 版本不满意,请将 zend-test 降级到支持旧 Phpunit 版本的版本。对那个项目不是很了解,所以只是一个建议,不知道有没有这样的版本,也不推荐。
我提交了一份报告,也许使用那个 class 是一个疏忽,或者有一个更简单的方法来解决依赖关系:https://github.com/zendframework/zend-test/issues/50
这是 "fixed" 由 Zend\Test 中名为 phpunit-class-aliases.php
的脚本编写的,但恕我直言,它没有正确配置,因为它位于 autoload-dev
部分(意味着它不会传播到其他项目。)
因此,在您的项目 composer.json 中,执行如下操作:
"autoload-dev": {
"files": [
"vendor/zendframework/zend-test/autoload/phpunit-class-aliases.php"
]
},
然后composer install
N.B。 Zend\Test
有一个解决这个问题的拉取请求,但他们说这是 PHPUnit 的错(PHPUnit 4 真可耻,因为......我不知道......根据 Zend\Test) 所以,我已经做到了:composer require illchuk/phpunit-class-aliases