2017-01-27 7 views
5

Моя сборка TravisCI не работает из-за фатальной ошибки, ссылающейся на PHPUnit_Util_Configuration::getTestdoxGroupConfiguration(), хотя PHPUnit работает без проблем локально. Я проверил, что Composer на TravisCI устанавливает ту же версию PHPUnit, что и локально установленную.TravisCI PHPUnit Fatal Error - вызов неопределенного метода PHPUnit_Util_Configuration :: getTestdoxGroupConfiguration()

Я заметил, что recent patch ссылается на конфигурацию групп тестовых групп, но я не могу понять, почему это изменение могло сломать PHPUnit в TravisCI, но не в моей локальной версии.

Вот композитор из TravisCI:

- Installing phpunit/phpunit (5.7.6) Downloading: 100% 

И вот роковая ошибка и трассировки стека из TravisCI:

PHP Fatal error: Call to undefined method PHPUnit_Util_Configuration::getTestdoxGroupConfiguration() in /home/travis/build/twistofreality/dilmun/vendor/phpunit/phpunit/src/TextUI/TestRunner.php on line 1042 
PHP Stack trace: 
PHP 1. {main}() /home/travis/.phpenv/versions/5.6.5/bin/phpunit:0 
PHP 2. PHPUnit_TextUI_Command::main() /home/travis/.phpenv/versions/5.6.5/bin/phpunit:722 
PHP 3. PHPUnit_TextUI_Command->run() phar:///home/travis/.phpenv/versions/5.6.5/bin/phpunit/phpunit/TextUI/Command.php:104 
PHP 4. PHPUnit_TextUI_TestRunner->doRun() phar:///home/travis/.phpenv/versions/5.6.5/bin/phpunit/phpunit/TextUI/Command.php:152 
PHP 5. PHPUnit_TextUI_TestRunner->handleConfiguration() /home/travis/build/twistofreality/dilmun/vendor/phpunit/phpunit/src/TextUI/TestRunner.php:163 

ответ

9

Проблема является несоответствие версий между глобальной версии TravisCI от PHPUnit и что Композитор устанавливается. Обратите внимание на последние две строки трассировки стека:

PHP 4. PHPUnit_TextUI_TestRunner->doRun() phar:///home/travis/.phpenv/versions/5.6.5/bin/phpunit/phpunit/TextUI/Command.php:152 
PHP 5. PHPUnit_TextUI_TestRunner->handleConfiguration() /home/travis/build/twistofreality/dilmun/vendor/phpunit/phpunit/src/TextUI/TestRunner.php:163 

Последняя строка ссылается на поставщика/PHPUnit (в данном случае, версия 5.7.6, за выход Composer), в то время как второй в последней строке ссылается на глобальный бен TravisCI в/phpunit (версия 5.6.5). Вероятно, патч в более поздней версии ломает что-то при попытке вызвать что-то в глобальной версии.

Обновление версии .travis.yml для использования vendor/bin/phpunit (плюс любые флаги) для использования версии, установленной Composer, устраняет проблему. В частности, добавив следующую строку в .travis.yml (или, как в моем случае, изменение существующей PHPUnit линии), будет делать трюк:

script: 
    - vendor/bin/phpunit [phpunit flags here] 
1

Просто добавьте

script: 
    - vendor/bin/phpunit 

в файл travis.yml