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

时间:2011-08-03 22:46:25

标签: php phpunit xdebug backtrace

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

display_errors = On
xdebug.default_enable = 1

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

回溯发生了什么? phpunit是否将它隐藏起来?我缺少一些设置吗?

谢谢!

2 个答案:

答案 0 :(得分:7)

  

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

是的,PHPUnit禁用xdebug,至少是这些痕迹(通过调用xdebug_disable()Docs)。

  

我缺少一些设置吗?

您可以使用bootstrap添加xdebug_enable()Docs文件,然后再次启用该文件。这确实有效,但会在任何抛出的异常(捕获或未捕获)上显示堆栈跟踪。

请参阅:Issue #221 PHPUnit disables xdebug,还有另一个ini设置建议:

  

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

     

现在,如果我没记错的话,Derick建议使用xdebug_disable();而不是ini_set('xdebug.show_exception_trace', 0);

答案 1 :(得分:1)

这是因为使用phpunit的单元测试是从控制台运行的,控制台是一个CLI应用程序。您应该可以使用以下命令运行它:

php -dhtml_errors=1 `which phpunit` yourteststuff.