1

我们正在开发一个 Symfony2 项目,我们在该项目上编写了几个 PHPUnit 测试。

在其中一些(涉及大内存量的那些)上,我们收到一条错误消息:

有 1 次失败:

1) GapCoach\Bundle\Tests\Controller\ClientControllerTest::testDesaClient

致命错误:在第 379 行的 /usr/share/php/PHPUnit/Util/GlobalState.php 中调用未定义的函数 file_iterator_autoload()

我安装了最后一个 PHPUnit 版本,file_iterator_autoload功能确实存在并且可以访问。

我们如何解决这个错误?

4

2 回答 2

3

如果您使用的机器由于某种原因无法立即升级到 PHP 5.3.3 或更高版本(PHPUnit 3.7需要),那么您可以通过降级软件包来修复此错误。

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

现在一切都应该工作了:)

于 2013-03-07T21:31:10.560 回答
2

解决方案只是将 PHPUnit 升级到3.7.13版本

于 2013-01-16T14:30:01.157 回答