2
在谷歌測試,我想能夠做這樣的事崩潰:測試與谷歌測試
void ImNotNiceToPointers(void* p)
{
((int*)p) [5] = 1;
}
TEST(Bla, BlaBla)
{
EXPECT_NO_CRASH(ImNotNiceToPointers(NULL));
}
而且我想輸出顯示錯誤的聲明實際上使進程異常死亡。
在Google測試中是否對此有任何支持?我很確定我將如何自己實施它,所以我幾乎可以肯定這是可能的。
看來,死亡測試是爲了斷言它死亡。 I.e如果沒有,我會得到一個錯誤,我有種尋找其他方法。對於你的其他評論:這不是意外的崩潰,這是爲了確保一個API可以接受各種古怪的輸入與適當的錯誤處理,其中包括傳遞空指針等。捕捉崩潰作爲控制錯誤允許連續執行的測試沒有中斷。 – sharkin
在上面的代碼中,死亡測試斷言驗證代碼通常使用ExitedWithCode(0)謂詞退出。如果ImNotNiceToPointers()調用正常執行,控制權將傳遞給exit()函數,這會強制子進程正常退出,從而滿足測試條件。如果ImNotNiceToPointers調用崩潰,則不會滿足ExitedWithCode(0)謂詞,導致斷言失敗。 – VladLosev