【问题标题】:Why does PHPUnit hide my xdebug backtrace?为什么 PHPUnit 隐藏我的 xdebug 回溯?
【发布时间】:2011-10-19 12:55:09
【问题描述】:

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

display_errors = On
xdebug.default_enable = 1

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

回溯发生了什么? phpunit 对我隐瞒了吗?有没有我遗漏的设置?

谢谢!

【问题讨论】:

    标签: php phpunit xdebug backtrace


    【解决方案1】:

    回溯发生了什么? 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);

    【讨论】:

    • 现在我不记得推荐这个或为什么:)。我知道 show_exception_trace 是 off by default
    • 可能值得再次回顾一下 PHPUnit 中的实践 :) 我会运行一些测试。
    • 一开始就调用 xdebug_enable() 就可以了。谢谢!
    【解决方案2】:

    这是因为使用 phpunit 的单元测试是从控制台运行的,控制台是一个 CLI 应用程序。你应该能够运行它:

    php -dhtml_errors=1 `which phpunit` yourteststuff.
    

    【讨论】:

      猜你喜欢
      • 2014-04-09
      • 2015-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多