【问题标题】:Phpunit error in PhpStormPhpStorm 中的 Phpunit 错误
【发布时间】:2015-10-11 23:43:20
【问题描述】:

我正在 PhpStorm 中运行测试,但出现此错误。有谁知道到底是什么原因造成的?

PHP 致命错误:在中找不到类 'PHPUnit_TextUI_ResultPrinter' C:\Users\administrator1\AppData\Local\Temp\ide-phpunit.php 在第 249 行

我在其他项目中运行测试 - 也使用 ide-phpunit.php 并且它们运行得很好。

【问题讨论】:

  • PHPUnit 版本?它是什么类型的安装(PHAR/Composer)? PhpStorm 版本?
  • 我发现了问题(答案如下)。为了帮助解决此问题的 Google 员工,尽管它是 composer install, phpunit 3.7, PhpStorm 9 :)

标签: phpunit phpstorm


【解决方案1】:

我在 Ubuntu 16.10、phpStorm 2017.2 和 Laravel 5.5 上遇到了同样的问题

通过从我的 Ubuntu 系统中卸载 phpunit 来修复它

sudo apt-get remove phpunit
sudo apt-get install --autoremove

或者对于 mac:

brew uninstall phpunit
brew install phpunit

我的 PhpStorm 配置(文件 -> 设置 -> 语言和框架 -> PHP -> 测试框架):

现在效果很好!

【讨论】:

  • 我用类似的设置解决了同样的问题。唯一的区别是 Ubuntu 17.10。
  • @panepeter 我只有一个理论来解释为什么。对我来说,作曲家 PHPUnit (PU) 版本是 6.5,系统版本是 5.1,我扩展了 TestCase 类的命名空间版本,因此自动加载了 PU6 TestCase。然而,在某个地方,PU6 类使用了 PU5 中存在的类,它是从系统而不是通过作曲家自动加载的。我没有系统版本的自动加载器,所以我只能猜测安装 phpunit 修改了一些内容以包括在作曲家版本之前添加的自身自动加载器。
  • 修复了 Ubuntu 20.04 上与当前 PHPStorm 2020 相同的问题。在我无法使用 PHPStorm 的测试运行器的所有 TDD 项目中,我已经为此困扰了几个月。不管我如何定义对 PHPUnit 可执行文件的引用,我都会得到奇怪的错误。从来没有想过删除发行版的 phpunit。
【解决方案2】:

我犯了一个愚蠢的错误...只是忘记在项目中添加 phpunit 作为依赖项。对于收到此错误的其他任何人,请在 composer.json 添加:

"require-dev": {
    "phpunit/phpunit": "3.7.*"
},

然后运行:

composer update

这解决了问题。

【讨论】:

  • 不知何故没有解决问题,无论是“require”还是任何更高的PHPUnit版本(5.5)
  • 我也没有解决我的问题... PHPUnit 6.0.7 与 PHP 7.1.2 和 PHPStorm 2016.3.2
  • PHPUNIT 6 的问题。有修复但尚未合并 github.com/whatthejeff/nyancat-phpunit-resultprinter/pull/12
  • 添加了 "phpunit/phpunit": "^9.3.3" 成功了 :-)
【解决方案3】:

在我的情况下,问题是由以下一组原因引起的:

  1. 我使用 composer 和 composer require phpunit/phpunit 命令安装了 phpunit。我没有注意到默认情况下它使用 php7 并安装了 phpunit6,它的类名带有命名空间 (PHPUnit\TextUI\ResultPrinter)。
  2. IDE 运行旧版本的 phpunit,它需要没有命名空间的类名 (PHPUnit_TextUI_ResultPrinter)

我决定重新安装phpunit,运行与上面相同的composer命令,但在php 5.6下(因为与php5.6兼容很重要)并且它安装了phpunit 5.7。 但是可以使用较新版本的 phpunit 和 php:Settings > PHP > PHPUnit :: "Use composer autoloader"(设置供应商内部 phpunit 可执行文件的路径(在我的情况下是 vendors/bin/phpunit))

【讨论】:

  • 我刚刚在“测试框架设置”中进行了“刷新”,PhpStorm 将 PhpUnit 更新到了最新版本 - 这很有帮助。
  • 是的,这为我指明了正确的方向,当更新 composer.json 中的 phpunit 时,必须重新加载 phpstorm 配置以检测更新。谢谢
【解决方案4】:

我在 PHPStorm 中使用各种 修饰符-F10 键时遇到此错误,因为它不知道在哪里可以找到正确的 PHPUnit。

在设置 (ctrl-alt-s) 中,搜索 PHPUnit。就我而言,我想将其设置如下:

  • “使用作曲家自动加载器”
  • 脚本路径:full-path-to-project/vendor/autoload.php(此字段对我来说是空的,对话框中显示错误)

否则它将尝试使用库的某些缓存版本 (/tmp/ide-phpunit.php) 而不是作曲家版本。如果你喜欢使用一些全局安装的二进制文件,你当然可以使用Path to phpunit.phar 选项。

【讨论】:

  • 注意。使用vendor/autoload.php 而不是项目根目录的autoload.php。
【解决方案5】:

我通过 composer 遇到了 PHP7.1 和 PHPUnit 6.3 的相同问题,但我通过 phpunit.phar 解决了。 (在选项中:选择 phpunit.phar 的路径,点击下载并点击刷新)

【讨论】:

    【解决方案6】:

    更新到最新的作曲家composer run-script drupal-phpunit-upgrade 后,PHPStorm 仍然映射到旧版本,即使我是通过自动加载器加载的。我转到 Languages & Frameworks > Php > Test Frameworks 并点击与“脚本路径”在同一行的刷新按钮。

    现在我的 PHPUnit 版本是 6.5.8。

    【讨论】:

      【解决方案7】:

      在我的例子中,在 phpstorm 首选项 -> php -> CLI 解释器设置在本地,当它需要使用远程 php 7 (ubuntu) 时。

      因为我使用 vagrant box 在 ubuntu 上配置了我的环境。

      【讨论】:

      • 同样适用于 docker
      【解决方案8】:

      我最近遇到了类似的错误PHPUnit_TextUI_ResultPrinter not found in TeamCity.php on line 19

      我正在使用PhpStorm 2018.3.3。使用 PhpStorm 的终端时 $ phpunit PHPUnit 7.5.1 by Sebastian Bergmann and contributors.

      来自我的 Ubuntu 系统 $ phpunit --version PHPUnit 5.1.3 by Sebastian Bergmann and contributors.

      我必须确保我的 Ubuntu 系统 PHPUnit 已更新到 7.5.1。所以这就是我所做的:

      sudo wget https://phar.phpunit.de/phpunit-7.5.1.phar
      sudo chmod +x phpunit-7.5.1.phar
      sudo mv phpunit-7.5.1.phar /usr/local/bin/phpunit
      

      然后我去了 PhpStorm: 文件 > 设置 > 语言和框架 > PHP > 测试框架并确保 PHPUnit 版本也是 7.5.1

      然后从 PhpStorm 终端:phpunit,测试用例运行良好。

      【讨论】:

        【解决方案9】:

        我去设置里面设置我的php路径如下:(根据brew)

        /usr/local/opt/php/bin/php
        

        然后 phpunit 工作。

        【讨论】:

          【解决方案10】:

          我遇到了同样的错误。使用phpunit4.8(老版本)解决

          【讨论】:

          • 因为上面有几个更好的解决方案,降级phpunit不应该被认为是一个可以接受的解决方案。根据我的经验,当您拥有超过 1 个 phpunit 版本(一个系统,一个作曲家供应商)时,就会发生此问题。仅当偶然使两个版本相互兼容时,降级一个才会起作用。
          猜你喜欢
          • 2014-11-12
          • 2014-12-28
          • 2013-06-19
          • 2015-09-19
          • 2018-03-24
          • 1970-01-01
          • 2012-08-01
          • 2018-10-14
          • 2011-07-25
          相关资源
          最近更新 更多