PHPunit代码覆盖率错误

时间:2011-11-14 15:22:10

标签: php phpunit code-coverage pear

PHPunit正在运行,但是我收到此代码覆盖率错误,并且没有获得代码覆盖率报告。

有谁知道如何解决这个问题?

谢谢,

德棉。

demian@dimbo-TP:/var/www/z2d2/tests$ phpunit
PHPUnit 3.5.15 by Sebastian Bergmann.

...

Time: 1 second, Memory: 13.00Mb

OK (3 tests, 4 assertions)

Generating code coverage report, this may take a moment.PHP Fatal error:  Class 'PHP_Token_Stream' not found in /usr/share/php/PHP/Token/Stream/CachingFactory.php on line 68
PHP Stack trace:
PHP   1. {main}() /usr/bin/phpunit:0
PHP   2. PHPUnit_TextUI_Command::main() /usr/bin/phpunit:49
PHP   3. PHPUnit_TextUI_Command->run() /usr/share/php/PHPUnit/TextUI/Command.php:129
PHP   4. PHPUnit_TextUI_TestRunner->doRun() /usr/share/php/PHPUnit/TextUI/Command.php:188
PHP   5. PHP_CodeCoverage_Report_HTML->process() /usr/share/php/PHPUnit/TextUI/TestRunner.php:363
PHP   6. PHP_CodeCoverage_Report_HTML->addItems() /usr/share/php/PHP/CodeCoverage/Report/HTML.php:135
PHP   7. PHP_CodeCoverage_Report_HTML_Node_Directory->addFile() /usr/share/php/PHP/CodeCoverage/Report/HTML.php:214
PHP   8. PHP_CodeCoverage_Report_HTML_Node_File->__construct() /usr/share/php/PHP/CodeCoverage/Report/HTML/Node/Directory.php:156
PHP   9. PHP_CodeCoverage_Util::getLinesToBeIgnored() /usr/share/php/PHP/CodeCoverage/Report/HTML/Node/File.php:169
PHP  10. PHP_Token_Stream_CachingFactory::get() /usr/share/php/PHP/CodeCoverage/Util.php:271

Fatal error: Class 'PHP_Token_Stream' not found in /usr/share/php/PHP/Token/Stream/CachingFactory.php on line 68

Call Stack:
    0.0002     326940   1. {main}() /usr/bin/phpunit:0
    0.0434     666604   2. PHPUnit_TextUI_Command::main() /usr/bin/phpunit:49
    0.0435     667084   3. PHPUnit_TextUI_Command->run() /usr/share/php/PHPUnit/TextUI/Command.php:129
    0.0943    4312004   4. PHPUnit_TextUI_TestRunner->doRun() /usr/share/php/PHPUnit/TextUI/Command.php:188
    1.1150   13272196   5. PHP_CodeCoverage_Report_HTML->process() /usr/share/php/PHPUnit/TextUI/TestRunner.php:363
    1.1521   14100768   6. PHP_CodeCoverage_Report_HTML->addItems() /usr/share/php/PHP/CodeCoverage/Report/HTML.php:135
    1.1521   14101320   7. PHP_CodeCoverage_Report_HTML_Node_Directory->addFile() /usr/share/php/PHP/CodeCoverage/Report/HTML.php:214
    1.1521   14103132   8. PHP_CodeCoverage_Report_HTML_Node_File->__construct() /usr/share/php/PHP/CodeCoverage/Report/HTML/Node/Directory.php:156
    1.1595   14122724   9. PHP_CodeCoverage_Util::getLinesToBeIgnored() /usr/share/php/PHP/CodeCoverage/Report/HTML/Node/File.php:169
    1.1595   14123076  10. PHP_Token_Stream_CachingFactory::get() /usr/share/php/PHP/CodeCoverage/Util.php:271

5 个答案:

答案 0 :(得分:10)

您正在运行PHPUnit 3.5.x,因此可以使用以下命令安装所需的令牌流版本:

sudo pear install --force --alldeps phpunit/PHP_CodeCoverage-1.0.2

如果你想更新到当前版本的phpunit那么单独的行

sudo pear install --force --alldeps phpunit/phpunit

将完成这项工作,但如果我没记错的话,你正在尝试使用Zend Framework测试环境并且只适用于PHPUnit 3.5.15


如果两个选项都失败或不适合

sudo pear install --force phpunit/PHP_TokenStream

什么一定能让你得到一个有效的PHPUnit 3.5.15

http://dustyreagan.com/downgrade-phpunit-3-6-to-3-5-15/

重要提示:如果您通过PEAR安装PHPUnit。此安装方法不再 支持和http://pear.phpunit.de/不迟于关闭 2014年12月31日。

请阅读http://phpunit.de/manual/current/en/installation.html和 学习如何从PHAR中使用PHPUnit或通过Composer安装它。

答案 1 :(得分:2)

如果所有努力降级phpunit 3.6到3.5都没有成功。 您可以通过将以下代码添加到/usr/share/php/PHP/Token/Stream/CachingFactory.php来修复此问题来修复“未找到类'PHP_Token_Stream'...”

require_once('PHP/Token/Stream/Autoload.php');

答案 2 :(得分:1)

尝试通过重新安装修复phpunit:

$ pear upgrade -f phpunit

答案 3 :(得分:0)

用pear安装phpunit对我来说根本不起作用。

我最终做的是(在某些目录中,例如 / home / USERNAME / phpunit ):

wget http://pear.phpunit.de/get/phpunit.phar
chmod +x phpunit.phar

在.bash.rc中添加结尾

export PATH=${PATH}:PATH_WHERE_YOU_PUT_phpunit.phar

在我的例子中,PATH_WHERE_YOU_PUT_phpunit.phar将是/ home / USERNAME / phpunit

之后,phpunit可以在任何目录中使用命令 phpunit.phar 执行

答案 4 :(得分:0)

某些Linux发行版的选项可能是使用yum或apt-get来安装phpunit。

我正在使用Fedora 17并使用yum安装phpunit,一切正常。不确定Ubuntu / Mint包的工作情况。

在Windows中,我使用了梨,它在那里工作得很好但是因为我在yum中找到了phpunit,我想我先试试。