我使用PHPUnit的單元測試,但是當致命錯誤被觸發,該腳本死亡我沒有正確的PHPUnit的輸出。PHPUnit的:致命錯誤處理
我想PHPUnit輸出保持正確格式,因爲它是由Eclipse插件讀取的。實際上,致命錯誤會阻止PHPUnit,並且在Eclipse中插件無法解釋任何內容(因爲PHPUnit腳本有錯誤,而不是處理它)。
謝謝
我使用PHPUnit的單元測試,但是當致命錯誤被觸發,該腳本死亡我沒有正確的PHPUnit的輸出。PHPUnit的:致命錯誤處理
我想PHPUnit輸出保持正確格式,因爲它是由Eclipse插件讀取的。實際上,致命錯誤會阻止PHPUnit,並且在Eclipse中插件無法解釋任何內容(因爲PHPUnit腳本有錯誤,而不是處理它)。
謝謝
捕獲致命錯誤您需要使用PHPUnit的進程隔離功能 - 在新進程中啓動每個測試套件。
phpunit --process-isolation ...
這是確保致命錯誤不會中斷phpunit輸出的唯一方法。
進程隔離乘以你的測試運行時間,因爲每個單獨測試,一個新的PHP實例啓動,引導執行等
要修正這種情況下,你可能選擇在單獨的進程中運行完整的測試用例(@runTestsInSeparateProcesses
),或者只選擇一些已知有時會致命的單個測試用例(@runInSeparateProcess
)。
儘管它確實大大提高了測試執行力,在這裏只需要150秒的測試就能從4秒到90秒。 – stefgosselin 2011-05-19 04:39:46
您可以禁用「備份全局變量」以獲得更好的測試速度。這也取決於你的引導文件的速度。 – cweiske 2011-05-19 05:42:58
- 當我嘗試運行7000多個測試時,進程隔離會導致巨大的腦損傷,我在--bootstrap和--printer中使用了'register_shutdown_function()'來進行TeamCity集成。本月晚些時候我會分享資料。 – 2012-04-26 16:17:05
set_error_handler()不會幫助你。您可以使用register_shutdown_function()
如上所述,我想要一個PHPUnit錯誤(我想phpunit輸出不會被搞砸)。我已經擴展了這個問題的描述。 – 2010-10-01 18:45:18
什麼樣的致命錯誤?如果它們是語法或語義相關的,那麼你運氣不好。 – stillstanding 2010-10-01 18:55:55