Почему phpunit не показывает никаких ошибок в консоли


Я использую phpunit с фреймворком Laravel 4. Почему, когда во время тестов возникает ошибка PHP, сообщения об ошибках не отображаются (например, отсутствует метод)?

Как мы можем заставить phpunit показывать все ошибки?

enter image description here

Author: Nyxynyx, 2013-08-05

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');
 28
Author: Alexander Yancharuk, 2013-12-08 08:28:37

Это очень распространенная проблема, особенно когда вы запускаете тесты на рабочем сервере или когда тестировщик не очень осведомлен о конфигурации 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, специально для вашего набора тестов, оставляя вашу производственную конфигурацию нетронутой и без необходимости писать загрузочный файл только для этого.

 43
Author: Victor Schröder, 2017-05-23 12:26:32