【问题标题】:PHP_CodeCoverage_Filter::getInstance() Error running phpunitPHP_CodeCoverage_Filter::getInstance() 运行 phpunit 时出错
【发布时间】:2012-12-11 06:43:48
【问题描述】:

我在我的 ubuntu 11.10 中安装了 phpunit,php 版本为 5.2.14。

但是当我运行我的测试模块时,它会抛出错误,

PHP Fatal error:  Call to undefined method PHP_CodeCoverage_Filter::getInstance() in /usr/share/php/PHPUnit/Autoload.php on line 64

我按照这个堆栈问题中提到的步骤进行操作,但仍然没有运气。

Call to undefined method PHP_CodeCoverage_Filter::getInstance()

【问题讨论】:

  • 请不要在您的问题中添加random 代码formatting。它使阅读变得非常困难。
  • @Charles - 我已经检查了您的编辑,并且会从下次开始处理它。谢谢!!

标签: php zend-framework phpunit code-coverage


【解决方案1】:

以下步骤解决了我的问题。

sudo apt-get remove phpunit

sudo pear channel-discover pear.phpunit.de

sudo pear channel-discover pear.symfony.com

sudo pear channel-discover components.ez.no

sudo pear update-channels

sudo pear upgrade-all

sudo pear install --alldeps phpunit/PHPUnit

sudo pear install --force --alldeps phpunit/PHPUnit

【讨论】:

    【解决方案2】:

    一种解决方法 - 授予,而不是真正的解决方案 - 是绕过 PEAR 安装并通过 Composer install 使用本地副本。

    在项目根目录中创建一个名为composer.json的文件:

    {
        "require": {
            "phpunit/phpunit" : "3.7.*"
        }
    }
    

    当然,如果你有这样的需求,将phpunit版本修改为“3.6.*”或类似的。

    在项目根目录:

    # Install composer
    $ curl -s https://getcomposer.org/installer | php
    
    # Tell composer to install the dependencies identified in composer.json
    $ php composer.phar install
    
    # Now you can invoke the *local* copy of phpunit
    $ ./vendor/phpunit/phpunit/composer/bin/phpunit --version
    

    为简单起见,您可以创建指向 phpunit 可执行文件的符号链接。假设您想要一个名为 tests 的目录中的符号链接:

    $ ln -s ./vendor/phpunit/phpunit/composer/bin/phpunit ./tests/phpunit
    

    然后您可以调用 as(从项目根目录):

    $ cd tests
    $ ./phpunit --version
    

    更简单的是,您可以指示 Composer 为您处理符号链接。将此添加到您的composer.json:

    "config": {
        "bin-dir": "tests"
    }
    

    然后,像以前一样,您可以调用 as(从项目根目录):

    $ cd tests
    $ ./phpunit --version
    

    实际上,我通常做的是有一个名为scripts 的项目级目录,并将我的作曲家bin-dir 指向那里。然后我在tests 中手动创建一个指向scripts/phpunit 的符号链接。但最后一步可能比任何要求都更符合个人喜好。

    也许要解决 PEAR 问题还有很长的路要走,但我发现基于 Composer 的安装对我来说非常可靠。

    【讨论】:

    • 感谢您的回答。我现在从上面的堆栈溢出问题参考中安装了 phpunit。但是现在我在运行 phpunit 命令时收到Parse error: syntax error, unexpected T_FUNCTION, expecting ')' in /usr/share/php/File/Iterator/Autoload.php on line 45 错误。
    • 像 PHPUnit 这样的下载组件中的语法错误听起来像是下载不完整。我会删除并重新安装。
    • 啊,我注意到您使用的是 PHP 5.2.14。 PHPUnit 3.7 需要 PHP >= 5.3.3,而 PHPUnit 3.6 只需要 PHP >= 5.2.7。除非您需要使用 PHP 5.2,否则我建议您升级到 5.3。
    • 是的,我用谷歌搜索并了解它(phpunit)只需要 PHP >= 5.2.7,但我无法升级它。仍在寻找其他解决方案:(..谢谢你的伟大帮助
    • 您仍然可以使用基于作曲家的安装。只需在composer.json 中为phpunit 版本指定3.6.*。
    【解决方案3】:

    我的平台 Symfony 1.4 没有安装与最新 phpunit 版本兼容的最新版本插件。所以更新到最新版本的https://github.com/JWT-OSS/sfJwtPhpUnitPlugin/ 对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-04
      • 1970-01-01
      • 2012-02-29
      • 1970-01-01
      • 2016-10-14
      • 2014-06-01
      • 1970-01-01
      • 2017-08-05
      相关资源
      最近更新 更多