2017-01-27 64 views
5

Moja kompilacja TravisCI kończy się niepowodzeniem z powodu błędu krytycznego odwołującego się do PHPUnit_Util_Configuration::getTestdoxGroupConfiguration(), mimo że PHPUnit działa lokalnie bez problemu. Sprawdziłem, że Composer na TravisCI instaluje tę samą wersję PHPUnit, co zainstalowałem lokalnie.TravisCI PHPUnit Błąd krytyczny - Wywołanie niezdefiniowanej metody PHPUnit_Util_Configuration :: getTestdoxGroupConfiguration()

Zauważyłem, że recent patch odnosi się specjalnie do konfiguracji grup testowych, ale nie mogę się domyślić, dlaczego ta zmiana mogła zepsuć PHPUnit w TravisCI, ale nie w mojej lokalnej wersji.

Oto Kompozytor z TravisCI:

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

I tu jest błąd krytyczny i ślad stosu z 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 

Odpowiedz

9

Problemem jest niezgodność wersji między globalnej wersji TravisCI z PHPUnit i co Kompozytor instaluje. Należy zwrócić uwagę na dwa ostatnie wiersze ślad stosu:

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 

Ostatni wiersz odwołuje vendor/PHPUnit (w tym przypadku w wersji 5.7.6, Per wyjściu kompozytor), natomiast drugi do ostatniej linii odwołuje globalnego bin TravisCI za/phpunit (wersja 5.6.5). Prawdopodobnie łatka w nowszej wersji zepsuje coś, gdy próbuje wywołać coś w wersji globalnej.

Aktualizacja pliku .travis.yml w celu użycia vendor/bin/phpunit (plus dowolne flagi) do korzystania z wersji zainstalowanej przez program Composer rozwiązuje problem. W szczególności, dodanie tej linii do .travis.yml (lub, jak w moim przypadku, modyfikację istniejącej linii phpunit), rade:

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

Wystarczy dodać

script: 
    - vendor/bin/phpunit 

do pliku travis.yml