我安装了PHPUnit和xdebug,在CLI的php.ini文件中我有:
display_errors = On
xdebug.default_enable = 1
我已经确认在使用交互式控制台创建错误时会打印xdebug回溯,但是当运行phpunit时发生错误时,没有回溯?
回溯发生了什么? phpunit是否将它隐藏起来?我缺少一些设置吗?
谢谢!
答案 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.