【问题标题】:Symfony 5 Phpunit undefined methodSymfony 5 Phpunit 未定义方法
【发布时间】:2020-09-03 02:27:15
【问题描述】:

我正在使用 Symfony 5,并使用 documentation 中包含的命令安装了 phpunit-bridge:composer require --dev symfony/phpunit-bridge

当我用这个命令运行 phpunit 时,php bin/phpunit,我有这个错误:

PHP 致命错误:未捕获的错误:调用未定义的方法 PHPUnit\TextUI\TestRunner::doRun()

【问题讨论】:

  • 请分享更多细节。
  • 好的,有哪些细节?
  • 从任何事情开始。这是一种运行 PHPUnit 的标准方式,我无法想象它对每个人都不好。但是由于您没有显示任何内容(例如:任何人都可以重现问题的环境),因此几乎不可能提供任何提示
  • 我正在使用 Symfony 5.0 和 Windows 7。我使用以下命令安装了 symfony/phpunit-bridge:composer require --dev symfony/phpunit-bridge。当我运行 php bin/phpunitI 来安装 PHPUnit 时,出现此错误:C:\cmder\roadtrip>php bin/phpunit PHP Fatal error: Uncaught Error: Call to undefined method PHPUnit\TextUI\TestRunner::doRun() in C :\cmder\roadtrip\bin\.phpunit\phpunit-7.5-0\src\TextUI\Command.php:206

标签: symfony phpunit


【解决方案1】:

我会尝试猜测。

您还有一个像 liip/functional-test-bundle 或其他类似的捆绑包,它需要 PHPUnit 的需求(或者甚至您在 composer.jsonphpunit-bridge 中直接需要 PHPUnit)。

因此,您在项目中安装了两个不同版本的 PHPUnit,具有两个不同的 api。

如果安装 liip/functional-test-bundle 是您的情况并且您不想删除它,您需要通过桥安装与 Liip 捆绑包依赖项安装的相同 PHPUnit 版本。您可以通过SYMFONY_PHPUNIT_VERSION 环境变量或直接在bin/phpunit 文件中设置版本。或者您可以通过SYMFONY_PHPUNIT_DIR env 或直接在bin/phpunit 中重新定义已安装的PHPUnit 版本(在vendors/ 中)的路径。

注意:不能通过 .env.* 文件设置SYMFONY_PHPUNIT_VERSIONSYMFONY_PHPUNIT_DIR,因为bin/phpunit 不读取这些文件。所以它应该是真正的环境变量。

【讨论】:

  • 我多次安装和卸载 orm-fixtures、phpunit、liip/tests 和 symfony/phpunit-bridge。现在,它正在工作。非常感谢。
【解决方案2】:

symfony 5.1 也有类似的问题。我尝试升级所有与测试相关的开发包,但没有成功。 一旦我完全删除了所有开发(测试相关)包并重新安装了 symfony phpunit 桥包,它就可以工作了。 你必须删除根/bin目录下的phpunit文件

要遵循的步骤

  1. 删除所有开发测试包(例如:composer remove symfony/browser-kit
  2. 如果有以下包则删除:phpunit/phpunit、symfony/phpunit-bridge、symfony/css-selector、symfony/browser-kit
  3. 通过运行 composer require --dev symfony/phpunit-bridge 再次安装 brdge 包

【讨论】:

    猜你喜欢
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    相关资源
    最近更新 更多