2016-10-01 68 views
0

我使用Phil Squared的Catch Testing框架與一些使用assert的第三方代碼結合使用了unittests。C++ Catch Framework處理C的斷言?

在開發過程中,它經常會發生一些安靜情況,通常會導致一些錯誤提示並且程序被中止。在這些情況下,Catch不報告任何日誌和其他診斷信息。

有沒有辦法「重定向」這個程序墮胎並讓Catch處理它?

回答

1

你不能捕獲斷言,但你可以重新定義它。原始斷言只是終止程序,它不會拋出異常,所以你無法捕捉它。但斷言是一個宏,你可以解開原始的宏並定義你自己的宏。在C++程序中,以這種方式重新定義斷言是一種常見的技巧,它會拋出異常。然後你就可以在測試中抓住它。