gtest是谷歌發布的單元測試框架,功能強大。結合谷歌源代碼附帶的例子,把注意事項簡單總結如下。
1、單元測試是如何啟動運行的
每個單元測試的項目都是一個exe,而exe必然要有main作為入口函數。gtest有兩種引入main的方式。
方式1,添加對gtest_main.dll動態庫的引用,該庫實際上只有一個函數,就是導出的main函數。通過這種方式在單元測試代碼中無需主動聲明main主函數。
方式2,顯示添加main主函數,此時要注意添加InitGoogleTest(&argc, argv);
RUN_ALL_TESTS();兩個函數調用來啟動單元測試。
2、一般用法
TEST(TESTGROUP, CASE1) {
EXPECT_EQ(1, 1);
}
TEST(TESTGROUP, CASE2) {
EXPECT_NE(1, 2) << “應該不等”;
}
TESTGROUP是測試組的名字,CASE1是每個測試項的名字。
EXPECT_EQ
EXPECT_STREQ
是一系列的斷言函數,注意改函數可以插入各種提示信息,估計是一個ostream。
每個類的每個方法都應該有一個對應的測試用例
EXPECT_*為假時程序會繼續運行,應為這是測試預估成立的情況。
ASSERT_*系列程序則直接終止運行。
3、公共固定設施
從testing::Test繼承,例如MyTest : public testing::Test,然后重寫SetUp和TearDown函數。
然后test寫成
TEST_F(MyTest, test1) {
}
TEST_F(MyTest, test2) {
}
然后每個測試都會實例化該類一次。
4、不同類型測試
通常用於模板,能夠傳入不同的類型。同樣要繼承自testing::Test,然后使用不同的測試宏定義TYPED_TEST。
5、不同參數測試
測試不同的函數,繼承自TestWithParam<>,然后使用TEST_P
注意當有兩個參數以上時是可以進行組合的,
6、監聽者
此時需要自己寫main函數了