phpUnit致命错误

6

我刚刚开始为我的代码创建单元测试。过去我已经使用过PHPUnit,但今天它不起作用了。在创建任何新的测试之前,我决定运行一些旧的测试以查看它们是否仍然有效,但我从PHPUnit本身得到致命错误。我在Ubuntu的CLI中运行PHPUnit。

phpunit TestCaseFile

PHP Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/imap.ini on line 1 in Unknown on line 0
PHP Warning:  Xdebug MUST be loaded as a Zend extension in Unknown on line 0

Warning: Directive 'register_long_arrays' is deprecated in PHP 5.3 and greater in Unknown on line 0

Warning: Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in Unknown on line 0

Fatal error: Class 'PHPUnit_Framework_MockObject_Matcher_InvokedRecorder' not found in /usr/share/php/PHPUnit/Framework/MockObject/Matcher/InvokedAtLeastOnce.php on line 60

Call Stack:
    0.0002     651688   1. {main}() /usr/bin/phpunit:0
    0.0031    1173168   2. require('/usr/share/php/PHPUnit/TextUI/Command.php') /usr/bin/phpunit:48
    0.0046    1485456   3. require_once('/usr/share/php/PHPUnit/TextUI/TestRunner.php') /usr/share/php/PHPUnit/TextUI/Command.php:47
    0.0047    1503344   4. require_once('/usr/share/php/PHPUnit/Framework.php') /usr/share/php/PHPUnit/TextUI/TestRunner.php:47
    0.0168    3848688   5. require('/usr/share/php/PHPUnit/Framework/TestCase.php') /usr/share/php/PHPUnit/Framework.php:68
    0.0178    4091880   6. require_once('/usr/share/php/PHPUnit/Framework/MockObject/Matcher/InvokedAtLeastOnce.php') /usr/share/php/PHPUnit/Framework/TestCase.php:49

我检查了文件是否存在,文件路径等是否正确,但我不知道如何解决它。有人可以帮忙吗?
3个回答

22

我在OSX上遇到了这个问题。我需要通过PEAR删除phpunit,再次添加ez组件通道,并重新安装phpunit。

$ phpunit
PHP Fatal error:  Class 'PHPUnit_Framework_MockObject_Matcher_InvokedRecorder' not found in /usr/lib/php/PHPUnit/Framework/MockObject/Matcher/InvokedAtLeastOnce.php on line 60
$ sudo pear uninstall phpunit/PHPUnit
uninstall ok: channel://pear.phpunit.de/PHPUnit-3.4.11
$ sudo pear install phpunit/PHPUnit
Unknown remote channel: components.ez.no
Unknown remote channel: components.ez.no
phpunit/PHPUnit can optionally use PHP extension "dbus"
phpunit/PHP_CodeCoverage requires package "channel://components.ez.no/ConsoleTools" (version >= 1.6)
phpunit/PHP_CodeCoverage can optionally use PHP extension "xdebug" (version >= 2.0.5)
phpunit/PHPUnit requires package "phpunit/PHP_CodeCoverage" (version >= 1.0.2)
phpunit/PHP_TokenStream requires package "channel://components.ez.no/ConsoleTools" (version >= 1.6)
No valid packages found
install failed
$ sudo pear channel-discover components.ez.no
Adding Channel "components.ez.no" succeeded
Discovery of channel "components.ez.no" succeeded
$ sudo pear update-channels
....
$ sudo pear install phpunit/PHPUnit
phpunit/PHPUnit can optionally use PHP extension "dbus"
phpunit/PHP_CodeCoverage can optionally use PHP extension "xdebug" (version >= 2.0.5)
downloading PHPUnit-3.5.10.tgz ...
....
install ok: channel://components.ez.no/Base-1.8
install ok: channel://components.ez.no/ConsoleTools-1.6.1
install ok: channel://pear.phpunit.de/PHP_TokenStream-1.0.1
install ok: channel://pear.phpunit.de/PHP_CodeCoverage-1.0.3
install ok: channel://pear.phpunit.de/PHPUnit-3.5.10
$ phpunit
PHPUnit 3.5.10 by Sebastian Bergmann.

排序完成。


1
修复在Windows上也可以正常工作,你只需要删除sudo部分 :) - Álvaro González
如果您仍然遇到“无法安装依赖项... beta ... bla”错误,您可以通过 sudo pear install phpunit/PHPUnit-beta 命令强制安装。 - sod

3

不用担心,我已经解决了。

原来我第一次安装PHPUnit时使用的是APT,我运行了以下命令:

apt-get remove phpunit

然后重新安装:

apt-get install phpunit

这样就可以获得最新版本,并且所有功能都正常。希望这可以帮助其他遇到类似问题的人。


2

我先遇到了这个问题:

pear/XML_RPC2 需要 PHP 扩展程序 “curl”

所以我通过 Ubuntu 软件中心安装了 php5-curl。

接下来又遇到了这个问题:

未知的远程频道:components.ez.no

因此无法安装依赖项。之后执行了以下操作:

sudo pear channel-discover components.ez.no

所有东西都正常工作了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接