在Windows斷言,我斷言宏本質上是這樣的:捕習俗在GoogleTest使用__debugbreak
#define MYASSERT(condition) (if (!(condition)) { ReportFailture(#condition, __FILE__, __LINE__, __FUNCTION__); __debugbreak(); }
而在谷歌測試我試圖檢查的惡劣條件下的輸出測試界斷言出來,等:
ASSERT_DEATH({ MYASSERT(false); }, "");
然而這一切它報告以下消息:
Running main() from gtest_main.cc
..\Test\FormatUnitTest\Test_Format.cpp(59): error: Death test: { if (!(false)) { ReportFailture("false", ..\\Test\\UnitTest\\Test.cpp", 59, __FSTREXP __FUNCTION_
_ ); __debugbreak(); }; }
Result: illegal return in test statement.
Error msg:
[ DEATH ]
似乎GoogleTest正在處理結構化異常處理程序(SEH)中的調試異常作爲特例。但是,我想要捕捉斷言並驗證它的內容。
什麼是正確的舉動?我是否需要爲Google測試定義一個特殊斷言宏?如果是的話,它應該怎麼做?
我注意到,用assert(false)替換我的斷言(通過assert.h包含)不會調用這個問題 - 它有什麼不同?
我將需要然後重新定義我的自定義斷言宏使用谷歌測試調用'std :: abort'而不是'__debugbreak()'這是不幸的,但我可以忍受。 – Steven