gtest使用小結


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函數了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM