2011-08-03 53 views
3

我已经安装的PHPUnit和Xdebug,并在我的CLI的php.ini文件,我已经有了:为什么PHPUnit隐藏我的xdebug backtrace?

display_errors = On 
xdebug.default_enable = 1 

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

回溯发生了什么? phpunit是从我这里隐藏的吗?有我缺少的设置吗?

谢谢!

回答

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);

+2

现在我不记得推荐或为什么:)。我知道show_exception_trace是[默认关闭](http://xdebug.org/docs/stack_trace#show_exception_trace) – Derick

+0

这可能是值得再次检查PHPUnit中的做法:)我会运行一些测试。 – hakre

+1

在开始时调用xdebug_enable()就可以实现。谢谢! –

1

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

php -dhtml_errors=1 `which phpunit` yourteststuff. 
相关问题