Ошибка покрытия кода PHPunit - PullRequest
7 голосов
/ 14 ноября 2011

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 ]

10 голосов
/ 14 ноября 2011

Вы используете PHPUnit 3.5.x, поэтому необходимую версию Token Stream можно установить с помощью:

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/

Важное примечание : если вы устанавливаете PHPUnit через PEAR. Этот метод установки больше не поддерживается и http://pear.phpunit.de/ будет закрыто не позднее 31 декабря 2014 года.

Пожалуйста, прочитайте http://phpunit.de/manual/current/en/installation.html и узнайте, как использовать PHPUnit из PHAR или установить его через Composer.

2 голосов
/ 11 декабря 2012

Если все попытки понизить phpunit с 3.6 до 3.5 не увенчались успехом.Вы можете решить эту проблему, добавив приведенный ниже код в /usr/share/php/PHP/Token/Stream/CachingFactory.php, чтобы исправить «Класс 'PHP_Token_Stream' не найден ...»

require_once('PHP/Token/Stream/Autoload.php');
1 голос
/ 14 ноября 2011

Попробуйте исправить phpunit, переустановив:

$ pear upgrade -f phpunit
0 голосов
/ 23 ноября 2012

Для некоторых дистрибутивов Linux можно использовать yum или apt-get для установки phpunit.

Я использую Fedora 17 и установил phpunit с yum, все работало нормально с первой попытки. Не уверен, насколько хорошо работают пакеты Ubuntu / Mint.

В Windows я использовал pear, и там он работал нормально, но так как я нашел phpunit в yum, я решил сначала попробовать.

0 голосов
/ 13 октября 2012

Установка 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 в любом каталоге

...