我们正在开发一个Symfony2项目,我们在其上编写了几个PHPUnit测试。
在其中一些(涉及大型memmory ammounts的那些)上,我们收到一条错误消息:
有1次失败:
1)GapCoach \ Bundle \ Tests \ Controller \ ClientControllerTest :: testDesaClient
致命错误:在第379行的/usr/share/php/PHPUnit/Util/GlobalState.php中调用未定义的函数file_iterator_autoload()
我安装了最后一个PHPUnit版本,file_iterator_autoload
函数确实存在且可以访问。
我们如何解决这个错误?
答案 0 :(得分:3)
如果您使用的机器由于某种原因无法立即升级到PHP 5.3.3或更高版本(PHPUnit 3.7 requires),那么您可以通过降级软件包来修复此错误。
pear list -a
应该产生类似的内容:
Installed packages, channel pear.phpunit.de:
============================================
Package Version State
File_Iterator 1.3.3 stable
PHPUnit 3.6.12 stable
PHPUnit_MockObject 1.1.1 stable
PHP_CodeCoverage 1.1.4 stable
PHP_Timer 1.0.4 stable
PHP_TokenStream 1.1.4 stable
Text_Template 1.1.2 stable
您需要1.3.2版本的File_Iterator,1.1.1版本的Text_Template和1.0.3版本的PHP_Timer。
所以卸载旧的:
pear uninstall phpunit/PHPUnit
pear uninstall phpunit/PHPUnit_MockObject
pear uninstall phpunit/PHP_CodeCoverage
pear uninstall phpunit/File_Iterator
pear uninstall phpunit/PHP_Timer
pear uninstall phpunit/PHP_TokenStream
pear uninstall phpunit/Text_Template
您应该能够验证您没有安装phpunit软件包:
pear list -a
Installed packages, channel pear.phpunit.de:
============================================
(no packages installed)
现在首先显式安装这些依赖版本:
pear install phpunit/File_Iterator-1.3.2
pear install phpunit/PHP_Timer-1.0.3
pear install phpunit/Text_Template-1.1.1
然后PHPUnit:
pear install --alldeps phpunit/PHPUnit
pear list -a
Installed packages, channel pear.phpunit.de:
============================================
Package Version State
File_Iterator 1.3.2 stable
PHPUnit 3.6.12 stable
PHPUnit_MockObject 1.1.1 stable
PHP_CodeCoverage 1.1.4 stable
PHP_Invoker 1.1.2 stable
PHP_Timer 1.0.3 stable
PHP_TokenStream 1.1.4 stable
Text_Template 1.1.1 stable
所有人现在都应该工作:)
答案 1 :(得分:2)
解决方案只是将PHPUnit升级到版本 3.7.13