Почему phpunit не показывает никаких ошибок в консоли
Я использую phpunit с фреймворком Laravel 4. Почему, когда во время тестов возникает ошибка PHP, сообщения об ошибках не отображаются (например, отсутствует метод)?
Как мы можем заставить phpunit показывать все ошибки?
2 answers
Я думаю, что проблема, вероятно, относится к самому 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. Измените настройки вывода ошибок. Установите соответствующие настройки для сообщения об ошибках, отображение_ошибки, отображать_startup_errors в соответствующих php.ini
:
error_reporting = E_ALL
display_errors = On
display_startup_errors = On
Если вы не хотите изменять ошибку командной строки сообщая о поведении в глобальной области, вы можете использовать файл начальной загрузки PHPUnit для определения этих параметров.
1. Настройка начальной загрузки для PHPUnit. Откройте файл /Applications/MAMP/htdocs/testtingDecoded/phpunit.xml
и добавьте атрибут начальной загрузки в тег 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, специально для вашего набора тестов, оставляя вашу производственную конфигурацию нетронутой и без необходимости писать загрузочный файл только для этого.