为什么PHPUnit会隐藏我的xdebug回溯?

Ian*_*ips 3 php phpunit xdebug backtrace

我安装了PHPUnit和xdebug,在CLI的php.ini文件中我得到了:

display_errors = On
xdebug.default_enable = 1
Run Code Online (Sandbox Code Playgroud)

我已经验证了当我使用交互式控制台创建错误时会打印xdebug回溯,但是当运行phpunit时发生错误时,没有回溯?

回溯发生了什么?phpunit是否将它隐藏起来?有什么设置我不见了?

谢谢!

hak*_*kre 7

回溯发生了什么?phpunit是否将它隐藏起来?

是的,PHPUnit禁用xdebug,至少禁用这些跟踪(通过调用xdebug_disable()Docs).

有什么设置我不见了?

您可以添加一个引导文件,在其中使用xdebug_enable()Docs再次启用它.这确实有效,但会在抛出的任何异常(捕获或未捕获)上显示堆栈跟踪.

请参阅:问题#221 PHPUnit禁用xdebug,还有另一个ini设置建议:

sebastianbergmann:问题是xdebug.show_exception_trace配置设置.设置为时1,这将"在引发异常时显示堆栈跟踪 - 即使实际捕获到此异常.".此行为会破坏PHPUnit的输出.

现在,如果我没有记错,德里克使用推荐xdebug_disable();ini_set('xdebug.show_exception_trace', 0);.

  • 现在我不记得推荐那个或为什么:).我知道show_exception_trace默认为[off](http://xdebug.org/docs/stack_trace#show_exception_trace) (2认同)