【问题标题】:class PHPUnit\Framework\ExpectationFailedException not found找不到类 PHPUnit\Framework\ExpectationFailedException
【发布时间】:2017-11-23 02:02:47
【问题描述】:

当我尝试使用此命令运行失败的测试时: ./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

【问题讨论】:

  • 您是否尝试过删除供应商文件夹并重新开始?不是 root (!):$ rm -rf ./vendor && composer install

标签: phpunit zend-framework3 zend-test


【解决方案1】:

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

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

【讨论】:

  • 问题是 phpunit 6.X 不能与 php 5.X 一起工作
【解决方案2】:

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

因此,在您的项目 composer.json 中,执行以下操作:

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

然后composer install

注意Zend\Test 有一个拉取请求来解决这个问题,但他们说这是 PHPUnit 的错(你为 PHPUnit 4 感到羞耻...... idunno......根据 Zend\Test 有错误的类名)所以,我我已经做到了:composer require illchuk/phpunit-class-aliases

【讨论】:

    【解决方案3】:

    这是 zend-test 中的一个配置缺陷。它使用来自 Phpunit 6 的类,但根据它的 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 类,我强烈假设当 Zend-Test 项目发现配置缺陷时,您甚至无法安装不再在您的系统上。

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

    composer update
    

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

    我提交了一份报告,可能使用该类是一种疏忽,或者有一种不那么难的方法来解决依赖关系:https://github.com/zendframework/zend-test/issues/50

    【讨论】:

      猜你喜欢
      • 2023-01-19
      • 2019-07-22
      • 2017-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-28
      • 2017-02-24
      • 2017-06-24
      相关资源
      最近更新 更多