2015-10-27 2 views
1

Может ли кто-нибудь помочь мне понять причины, по которым эти модульные тесты терпят неудачу в CI, когда они проходят локальную настройку.PHP тесты проходят локально, но не работают на Travis CI, используя Composer, PSR-4 autoload

Хранилище находится в https://github.com/jabranr/test-ci

Испытания на https://travis-ci.org/jabranr/test-ci

тесты терпят неудачу в CI с высказыванием фатальная ошибка: PHP Fatal error: Class 'JRI\JabranCI\Exception\FooBarException' not found in /home/travis/build/jabranr/test-ci/test/exception/FooBarExceptionTest.php on line 11

Пакет использует PSR-4 автозагрузку. Вот composer.json и phpunit configuration. Заранее спасибо!

ответ

2

Итак, я понял, что эти тесты не работают, потому что имена каталогов не соответствуют автозагрузке PSR-4 с учетом регистратора.

В данном конкретном случае это было непосредственно связано с нечувствительным к регистру природой OSX. В то время как тесты модулей работали нормально и передавались на локальную машину OSX, они продолжали терпеть неудачу в Travis CI, поскольку он основывает тесты на контейнерах Linux (Ubuntu).

Так в основном сверху, например, при вызове JRI\JabranCI\Exception\FooBarException, структура каталогов должна быть src/JRI/JabranCI/Exception/FooBarException.php

Общий пример:

Если есть класс Baz с пространством имен Foo\Bar затем с помощью PSR-4 действительную структуру каталогов есть src/Foo/Bar/Baz.php. Структура каталога src/foo/bar/Baz.php недействительна в таком случае.

Смежные вопросы