gtest中如何跳出當前測試案例

2021-06-19 00:37:05 字數 783 閱讀 4832

在前面的

玩轉gtest - 斷言中, 我們提到了assert_*系列的斷言只是在當前函式返回,並非退出當前測試案例,因為assert_*系列是通過return來實現的(因此 assert_*系列不能在返回值不為void的函式內出現)。要退出當前測試案例,乙個最簡單的方法就是通過拋異常,然後讓gtest捕獲這一異常。示例如下:

void

func(

inta, 

intb)

test(footest, demo1)

int_tmain(

intargc, _tchar

*argv)

(上面的兩個printf函式都不會執行。)

要退出當前測試案例,你只需要兩步:

1.設定catch_exception標誌,在main函式或是在你的測試案例前都可以。

2.要跳出測試案例時,只需要通過throw丟擲任意異常即可。

為何通過這種方法可以跳出當前測試案例,請參考

玩轉gtest - 深入解析gtest。

需要注意的是:

假如使用的是test_f巨集,跳出當前測試案例後,會執行teardown(),因此不必當心teardown中釋放資源的操作不會執行。

我認為乙個好的測試案例,應該是在你的測試函式中,比如test巨集內,

清晰的表達出你要測試的物件,以及預期的測試結果。因此,通常情況下,expect_*和 assert_*應該盡量在測試函式中出現,而不是在測試函式內呼叫的另外函式或是裡面很多層的函式內才出現。(比如上面的func函式中的 expect_eq)。

出處:

gtest中如何跳出當前測試案例

在前面的 玩轉gtest 斷言中,我們提到了assert 系列的斷言只是在當前函式返回,並非退出當前測試案例,因為assert 系列是通過return來實現的 因此 assert 系列不能在返回值不為void的函式內出現 要退出當前測試案例,乙個最簡單的方法就是通過拋異常,然後讓gtest捕獲這一異...

gtest如何測試private成員

最近在使用gtest,但有個問題,對私有成員無法訪問。我了解到的比較流行的兩種做法是 1.將test class作為被測class的友元 friend 2.使用hack compiler的方法 define private protected 兩種方法個有優缺點,下面簡單分析下 這是一種compil...

如何跳出當前的多重迴圈?

最近看到乙個筆試題 如何跳出當前的多重迴圈?但是看到好多的答案 break,return,覺得這個答案似乎有些不妥 於是仔細推導一番 首先,不建議使用return跳出迴圈,題目也說到了是多重迴圈,如果使用return的話,會跳出整個函式,那後續的 豈不是無法執行 所以在這裡,整理了一下自己的看法,目...