2013-08-04 3 views
28

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

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

enter image description here

+0

Вы можете получить все ошибки PHPunit. [Этот] [1] или [Этот] [2] будет полезен для вас. [1]: http://stackoverflow.com/questions/3569862/phpunit-errors [2]: http://stackoverflow.com/questions/5994729/phpunit-not-showing-a-stack-trace -for-a-php-fatal-error –

ответ

23

Я думаю, что проблема, вероятно, относится к самому 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 загрузочный файл для определения того settnigs.

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'); 
40

Это очень распространенная проблема, особенно если вы работаете тесты на производственном сервере или когда тестер не очень хорошо разбирается в конфигурации PHP.

Вопрос связан с настройками php.ini, указанными в его ответе Alexander Yancharuk, и все предлагаемые им решения работают нормально.

Но есть другое решение, которое может быть полезным, так как это было для меня, что необходимо установить соответствующие настройки PHP в конфигурационном файле PHPUnit (XML) сам, следующим образом:

<phpunit> 
    <suites> 
     ... 
    </suites> 
    <php> 
     <ini name="display_errors" value="On" /> 
     <ini name="display_startup_errors" value="On" /> 
    </php> 
</phpunit> 

С помощью этого вы можете персонализировать не только отображение ошибок, но и многое из конфигурации PHP, в частности, для вашего тестового набора, оставляя конфигурацию вашего производства нетронутой и без необходимости писать файл начальной загрузки только для этого.

+0

Я пробовал это, но это не работает для меня. Просто интересно, не хватает ли я чего-то. Я использую Laravel 5.6 на Mac с High Sierra. PHP-версия PHP 7.1.7 и phpunit 7.0.0. Я добавил две строки, которые вы указали в элементе '' в файл 'phpunit.xml', который поставляется с Laravel, но не повезло. Ошибки пока не отображаются. Любая идея, почему бы и нет? – flyingL123

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