2011-08-03 55 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.