1

我需要在我的 Ubuntu 机器上为 Web 开发项目安装 PHPUnit,但我遇到了严重的问题。使用来自各种来源的建议,我已经通过安装pear并尝试了以下方法:

  • 目前,phpunit --version退货

    PHPUnit 3.7.20 by Sebastian Bergman 
    

当在/usr/share但在其他地方抛出错误。

  • include path的是

    include_path = ".:/usr/share/php:/usr/share/php/PEAR:/usr/share/php/File/Iterator"
    
  • 我尝试了不同的变体,从简单/usr/share/php到上面的完整字符串。 PEAR全部大写,因为那是它所在的文件夹。

  • 使用测试用例执行会导致

    PHP Warning:  require_once(File/Iterator/Autoload.php): failed to open stream: 
    No such file or directory in /usr/share/php/PHPUnit/Autoload.php on line 64
    PHP Stack trace:
    PHP   1. {main}() /usr/bin/phpunit:0
    PHP   2. require() /usr/bin/phpunit:43
    PHP Fatal error:  require_once(): Failed opening required 
    'File/Iterator/Autoload.php'(include_path='/usr/share/php/libzend-framework-php')
    in /usr/share/php/PHPUnit/Autoload.php on line 64
    
  • pear list -c phpunit返回

    Installed packages, channel pear.phpunit.de:
    ============================================
    Package            Version State
    File_Iterator      1.3.3   stable
    PHPUnit            3.7.20  stable
    PHPUnit_MockObject 1.2.3   stable
    PHP_CodeCoverage   1.2.10  stable
    PHP_Invoker        1.1.2   stable
    PHP_Timer          1.0.3   stable
    PHP_TokenStream    1.1.5   stable
    Text_Template      1.1.2   stable
    
  • 我已经确认两者都Autoload.php存在php/PHPUnit/php/File/Iterator/

  • 我加载php.ini的文件位于 `/etc/php5/cli.php.ini1 由

    php --info | grep "onfiguration"
    

任何其他建议将不胜感激。

4

3 回答 3

2

在您的计算机上搜索名为 Autoload.php 的文件,其文件结构如下: ../File/Iterator/Autoload.php

现在打开引发错误的文件(/usr/share/php/PHPUnit/Autoload.php在您的情况下)并包含一个set_include_path指向该文件绝对路径的语句。

您似乎遇到了与我在 Mac OSX 上遇到的问题非常相似的问题。有关更多信息,请查看这个非常相似的问题。如果所有这些都没有帮助,请尝试使用Composer安装,我听说它没有这个问题。

于 2013-05-20T20:24:12.760 回答
0

对于最近的项目,我使用Composer来安装 PHPUnit 和其他相关工具。这很容易:

## ... rest of the composer.json file
# "php -f composer.phar update --dev" to install

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

然后,我还有一个 shell 脚本,可以从 ./vendor/bin/ 目录中实际运行 PHPUnit 命令行工具,该目录安装了指向本地安装脚本的链接。

于 2013-05-25T00:13:22.190 回答
0

Alister的回答一样,依赖Composer ,但我更喜欢在我的项目中全局部署更新的PHPUnit :

composer.phar global require "phpunit/phpunit=dev-master"

这样,当我位于 Symfony 项目的根目录时,我就可以运行

~/.composer/vendor/bin/phpunit -c app/ -v --filter testFireNotifications |tee phpunit.log

--filter的最后一点是有选择地运行某些东西(实际上,更多的是通过 crontab 实现快速 Web 自动化,而不是测试......)

即使在当前的 Ubuntu 14.04.2 服务器上,repo 也被一个过时的 PHPUnit 3.7.28“稳定”卡住了,所以我回避了操作系统提供的这个自定义安装,不会发生冲突(我没有放入 ~/.composer/vendor/bin我的路径)。

于 2015-05-28T13:59:53.223 回答