Почему PHPUnit скрывает мою трассировку xdebug? - PullRequest
3 голосов
/ 04 августа 2011

У меня установлены PHPUnit и xdebug, и в моих файлах php.ini для CLI есть:

display_errors = On
xdebug.default_enable = 1

Я проверил, что обратная трассировка xdebug печатается, когда я создаю ошибку с помощью интерактивной консоли, но когда возникает ошибка при запуске phpunit, нет обратной трассировки?

Что происходит с обратным следом? Phpunit скрывает это от меня? Я пропускаю какие-то настройки?

Спасибо!

Ответы [ 2 ]

7 голосов
/ 04 августа 2011

Что происходит с обратным следом? Phpunit скрывает это от меня?

Да, PHPUnit отключает xdebug, по крайней мере, эти трассировки (вызывая xdebug_disable() Документы ).

Есть какие-то настройки, которые я пропускаю?

Вы можете добавить файл bootstrap , в который вы снова включите его с помощью xdebug_enable() Docs . Это сработает, но покажет вам трассировку стека и для любого сгенерированного исключения (пойманного или необработанного).

См. Также: Проблема # 221. PHPUnit отключает xdebug , предлагается другой параметр ini:

Себастьянбергман : Проблема в настройке xdebug.show_exception_trace. Если установлено значение 1, это будет «показывать трассировку стека всякий раз, когда возникает исключение - даже если это исключение фактически перехвачено». Такое поведение нарушает вывод PHPUnit.

Теперь, если я правильно помню, Дерик рекомендовал использовать xdebug_disable(); сверх ini_set('xdebug.show_exception_trace', 0);.

1 голос
/ 04 августа 2011

Это потому, что модульные тесты с phpunit запускаются из консоли, которая является приложением CLI. Вы должны быть в состоянии запустить его с:

php -dhtml_errors=1 `which phpunit` yourteststuff.
...