带有三叶草的PHPUnit:找不到类PHP_Token_OPEN_TAG

时间:2012-06-25 15:25:54

标签: php magento phpunit

我正在运行PHP单元,如下所示:

phpunit --debug --verbose --coverage-clover=/tmp/test.xml

并收到以下错误:

Fatal error: Class 'PHP_Token_OPEN_TAG' not found in /opt/pear/share/pear/PHP/Token/Stream.php on line 205

堆栈跟踪导致

12. PHP_Token_Stream->scan($sourceCode = '<?php\n/**\n...') /opt/pear/share/pear/PHP/Token/Stream.php:147

源代码在语法上是可以的。

此类在/opt/pear/share/pear/PHP/Token.php中定义,但看起来无法找到。

2 个答案:

答案 0 :(得分:2)

我在Stream.php:147中转储了spl_autoload_functions()的输出,发现有一些Aitoc自动加载器。

问题是由Aitoc Magento扩展引起的。

它们具有简单地取消注册所有自动加载器的功能。

$autoloaders = spl_autoload_functions();
if ($autoloaders and is_array($autoloaders) && !empty($autoloaders))
{
    foreach ($autoloaders as $autoloader)
    {
        spl_autoload_unregister($autoloader);
    }
}

答案 1 :(得分:0)

似乎是版本控制/自动加载问题,因为令牌包或代码覆盖率包可能未正确安装/更新。

提供

(sudo) pear install --force --alldeps phpunit/phpunit 
试一试。这通常可以修复那些“奇怪的错误”。