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

发布于 2024-11-27 19:27:06 字数 248 浏览 2 评论 0原文

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

display_errors = On
xdebug.default_enable = 1

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

回溯发生了什么? phpunit 对我隐藏了吗?我缺少一些设置吗?

谢谢!

I have PHPUnit and xdebug installed, and in my php.ini files for CLI I've got:

display_errors = On
xdebug.default_enable = 1

I've verified that an xdebug backtrace is printed when I create an error using the interactive console, but when an error occurs while running phpunit, there is no backtrace?

What is happening to the backtrace? Is phpunit hiding it from me? Is there some setting I'm missing?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

你穿错了嫁妆 2024-12-04 19:27:06

回溯发生了什么? phpunit 是否对我隐藏了它?

是的,PHPUnit 禁用 xdebug,至少禁用这些跟踪(通过调用 xdebug_disable()文档)。

我是否缺少某些设置?

您可以添加一个 bootstrap 文件,在其中使用 xdebug_enable()文档。这确实有效,但也会向您显示抛出的任何异常(捕获或未捕获)的堆栈跟踪。

另请参阅:Issue #221 PHPUnit 禁用 xdebug,建议使用另一个 ini 设置:

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

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

What is happening to the backtrace? Is phpunit hiding it from me?

Yes, PHPUnit disables xdebug, at least these traces (by calling xdebug_disable()Docs).

Is there some setting I'm missing?

You can add a bootstrap file in which you enable it again with xdebug_enable()Docs. This does work but will show you stack traces on any exception thrown as well (caught or uncaught).

See as well: Issue #221 PHPUnit disables xdebug, there is another ini setting suggested:

sebastianbergmann: The problem is the xdebug.show_exception_trace configuration setting. When set to 1, this will "show a stack trace whenever an exception is raised - even if this exception is actually caught.". This behaviour breaks the output of PHPUnit.

Now if I remember correctly, Derick recommended using xdebug_disable(); over ini_set('xdebug.show_exception_trace', 0);.

与酒说心事 2024-12-04 19:27:06

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

php -dhtml_errors=1 `which phpunit` yourteststuff.

It's because unit tests with phpunit are run from the console, which is a CLI application. You should be able to run it with:

php -dhtml_errors=1 `which phpunit` yourteststuff.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文