我安装了 PHPUnit 和 xdebug,在我的 CLI 的 php.ini 文件中,我得到了:
display_errors = On
xdebug.default_enable = 1
我已经验证了当我使用交互式控制台创建错误时会打印 xdebug 回溯,但是当运行 phpunit 时发生错误时,没有回溯?
回溯发生了什么?phpunit 对我隐瞒了吗?我缺少一些设置吗?
谢谢!
回溯发生了什么?phpunit 对我隐瞒了吗?
是的,PHPUnit 禁用 xdebug,至少这些跟踪(通过调用xdebug_disable()
Docs)。
我缺少一些设置吗?
您可以添加一个引导文件,在其中再次使用xdebug_enable()
Docs启用它。这确实有效,但也会向您显示任何抛出的异常(捕获或未捕获)的堆栈跟踪。
另见:Issue #221 PHPUnit disables xdebug,建议使用另一个 ini 设置:
sebastianbergmann:问题在于
xdebug.show_exception_trace
配置设置。当设置为 时1
,这将“在引发异常时显示堆栈跟踪 - 即使实际捕获了此异常。”。这种行为会破坏 PHPUnit 的输出。现在,如果我没记错的话,德里克建议使用
xdebug_disable();
overini_set('xdebug.show_exception_trace', 0);
。
这是因为使用 phpunit 的单元测试是从控制台运行的,控制台是一个 CLI 应用程序。您应该能够使用以下命令运行它:
php -dhtml_errors=1 `which phpunit` yourteststuff.