我正在使用googletest
,在我的許多測試中,我使用了ASSERT_THROW
命令。問題是,例如,如果它拋出與我預期不同的異常,我得到的結果是:從ASSERT_THROW獲取異常消息
實際:它拋出一個不同的類型。
有沒有辦法讓它吐出what()
的返回值呢?
我正在使用googletest
,在我的許多測試中,我使用了ASSERT_THROW
命令。問題是,例如,如果它拋出與我預期不同的異常,我得到的結果是:從ASSERT_THROW獲取異常消息
實際:它拋出一個不同的類型。
有沒有辦法讓它吐出what()
的返回值呢?
你可能通過指針拋出(使用new
關鍵字)
throw new MyDerivedException();
,並預計將獲得異常的非指針類型:
EXPECT_THROW(blah, MyDerivedException);
你應該值扔。
throw MyDerivedException(); // notice lack of 'new'
爲什麼它被接受的答案?它沒有解釋如何讓Google測試的ASSERT_THROW或EXPECT_THROW來打印實際的異常類型或消息。在調查這種測試失敗的同時,我們仍然被迫輸入try/catch。 – 4LegsDrivenCat
是從'std :: exception'派生的異常嗎?我正在查看Google測試代碼,並且一度捕獲來自'std :: exception'的異常,並將打印出'e.what()'。但我仍然在試圖弄清楚這是否是'EXPECT_THROW'情況的一部分。 – NicholasM
謝謝您的評論。是的。我試圖覆蓋什麼()吐出一些不同的輸出,但沒有成功。也許我沒有正確覆蓋它? – Bevan