簡介
googletest為我們提供了一系列的運行參數(環(huán)境變量、命令行參數或代碼里指定)仆邓,使得我們可以對案例的執(zhí)行進行一些有效的控制钠怯。
對于運行參數供常,gtest提供了三種設置的途徑:
系統(tǒng)環(huán)境變量
命令行參數
代碼中指定FLAG
因為提供了三種途徑,就會有優(yōu)先級的問題, 有一個原則是璧瞬,最后設置的那個會生效户辫。不過總結一下,通常情況下嗤锉,比較理想的優(yōu)先級為:
命令行參數 > 代碼中指定FLAG > 系統(tǒng)環(huán)境變量
系統(tǒng)環(huán)境變量設置方式
- 系統(tǒng)環(huán)境變量全大寫渔欢,比如對于--gtest_output,響應的系統(tǒng)環(huán)境變量為:GTEST_OUTPUT
- 有一個命令行參數例外瘟忱,那就是--gtest_list_tests奥额,它是不接受系統(tǒng)環(huán)境變量的。(只是用來羅列測試案例名稱)
參數列表
想要獲得詳細的命令行說明访诱,直接運行你的案例垫挨,輸入命令行參數:/? 或 --help 或 -help
測試案例集合
--gtest_list_tests
輸出測試用例列表,不會執(zhí)行測試用例盐数。這個在代碼中實際用途不大棒拂,主要用于命令行參數,示例如下玫氢。
int main(int argc, char **argv)
{
testing::GTEST_FLAG(list_tests) = true;
testing::InitGoogleTest(&argc, argv);
RUN_ALL_TESTS();
getchar();
return 0;
}
--gtest_filter
對執(zhí)行的測試案例進行過濾帚屉,支持通配符
通配符 | 含義 |
---|---|
? | 單個字符 |
* | 任意字符 |
- | 排除,如漾峡,-a 表示除了a |
: | 取或攻旦,如,a:b 表示a或b |
例:
例子 | 分析 |
---|---|
./foo_test | 沒有指定過濾條件生逸,運行所有案例 |
./foo_test --gtest_filter=* | 使用通配符*牢屋,表示運行所有案例 |
./foo_test --gtest_filter=FooTest.* | 運行所有“測試案例名稱(testcase_name)”為FooTest的案例 |
./foo_test --gtest_filter=Null:Constructor | 運行所有“測試案例名稱(testcase_name)”或“測試名稱(test_name)”包含Null或Constructor的案例。 |
./foo_test --gtest_filter=-DeathTest. | 運行所有非死亡測試案例 |
./foo_test --gtest_filter=FooTest.*-FooTest.Bar | 運行所有“測試案例名稱(testcase_name)”為FooTest的案例槽袄,但是除了FooTest.Bar這個案例 |
--gtest_also_run_disabled_tests
執(zhí)行案例時烙无,同時也執(zhí)行被置為無效的測試案例。關于設置測試案例無效的方法為:在測試案例名稱或測試名稱中添加DISABLED前綴遍尺。
// Tests that Foo does Abc.
TEST(FooTest, DISABLED_DoesAbc) {...}
class DISABLED_BarTest : publictesting::Test { ... };
// Tests that Bar does Xyz.
TEST_F(DISABLED_BarTest, DoesXyz) {...}
--gtest_repeat=[COUNT]
設置案例重復運行次數截酷。
如:
- --gtest_repeat=1000 重復執(zhí)行1000次,即使中途出現錯誤乾戏。
- --gtest_repeat=-1 無限次數執(zhí)行迂苛。
- --gtest_repeat=1000 --gtest_break_on_failure 重復執(zhí)行1000次,并且在第一個錯誤發(fā)生時立即停止鼓择。
- --gtest_repeat=1000 --gtest_filter=FooBar 重復執(zhí)行1000次測試案例名稱為FooBar的案例三幻。
測試案例輸出
命令行參數 | 說明 |
---|---|
--gtest_color=(yes/no/auto) | 輸出命令行時是否使用一些五顏六色的顏色。默認是auto呐能。 |
--gtest_print_time | 輸出命令行時是否打印每個測試案例的執(zhí)行時間念搬。默認是不打印的。 |
--gtest_output=xml [:DIRECTORY_PATH| :FILE_PATH] | 將測試結果輸出到一個xml中。1.--gtest_output=xml: 不指定輸出路徑時锁蠕,默認為案例當前路徑夷野。2.--gtest_output=xml:d:\ 指定輸出到某個目錄 3.--gtest_output=xml:d:\foo.xml 指定輸出到d:\foo.xml。如果不是指定了特定的文件路徑荣倾,gtest每次輸出的報告不會覆蓋悯搔,而會以數字后綴的方式創(chuàng)建。 |
對案例的異常處理
命令行參數 | 說明 |
---|---|
--gtest_break_on_failure | 調試模式下舌仍,當案例失敗時停止妒貌,方便調試 |
--gtest_throw_on_failure | 當案例失敗時以C++異常的方式拋出 |
--gtest_catch_exceptions | |
是否捕捉異常。googletest默認是不捕捉異常的铸豁,因此假如你的測試案例拋了一個異常灌曙,很可能會彈出一個對話框。如果想不彈這個框节芥,可以通過設置這個參數來實現在刺。比如將--gtest_catch_exceptions設置為一個非零的數。注意:這個參數只在Windows下有效头镊。 |
文章參考:https://blog.csdn.net/feng_ma_niu/article/details/41383325
https://www.cnblogs.com/coderzh/archive/2009/04/10/1432789.html