Я использую phpunit с базой Laravel 4. Почему, когда во время тестов возникает ошибка PHP, сообщения об ошибках не отображаются (например: отсутствующий метод)?
Как мы можем заставить phpunit показать все ошибки?
Я думаю, что проблема, вероятно, относится к самому PHP, а не к PHPUnit. Выполните следующие действия:
1. Проверьте правильность php.ini
. Обратите внимание, что некоторые системы могут использовать разные php.ini
для разных PHP SAPI:
php -i | grep php.ini Configuration File (php.ini) Path => /etc/php5/cli Loaded Configuration File => /etc/php5/cli/php.ini
2. Измените настройки вывода ошибок . Установите соответствующие параметры для error_reporting , display_errors , display_startup_errors в соответствующем php.ini
:
error_reporting = E_ALL display_errors = On display_startup_errors = On
Если вы не хотите изменять поведение сообщений об ошибках CLI в глобальной области, вы можете использовать файл начальной загрузки PHPUnit для определения этих настроек.
1. Установите bootstrap для PHPUnit . Откройте файл /Applications/MAMP/htdocs/testtingDecoded/phpunit.xml
и добавьте атрибут bootstrap в тег phpunit:
<phpunit bootstrap="bootstrap.php">
2. Создайте bootstrap.php в папке с phpunit.xml
:
<?php ini_set('error_reporting', E_ALL); // or error_reporting(E_ALL); ini_set('display_errors', '1'); ini_set('display_startup_errors', '1');
Это очень распространенная проблема, особенно когда вы выполняете тесты на производственном сервере или когда тестер не очень хорошо разбирается в конфигурации PHP.
Проблема связана с настройками php.ini
, как указал Александр Янчарук в своем ответе, и все решения, которые он предлагает, работают нормально.
Но есть еще одно решение, которое может быть полезным, как и для меня, – это установить соответствующие параметры PHP в самом файле конфигурации PHPUnit (XML):
<phpunit> <suites> ... </suites> <php> <ini name="display_errors" value="On" /> <ini name="display_startup_errors" value="On" /> </php> </phpunit>
Используя это, вы можете персонализировать не только отображение ошибок, но и многое из конфигурации PHP, особенно для вашего тестового набора, оставляя конфигурацию вашего производства нетронутой и без необходимости писать файл начальной загрузки только для этого.