Googletest入門
來源:https://github.com/google/googletest/blob/master/googletest/docs/primer.md
P.S. gmock作為gtest的孿生兄弟,其通俗介紹可以看這篇:https://blog.csdn.net/wangjingqi930330/article/details/80525056
簡介:為啥用googletest
用googletest是為了寫更好的測試代碼
googletest是谷歌專門的測試框架團隊開發的,跨平台,支持各種類型的測試。
理念:
- 測試應當具備獨立性和可重復性。
- 良好的組織
- 可移植,可重用
- 如果fail則提供盡可能多的信息
- 讓用戶專注於測試內容,避免做“家務活”
- 用起來快,不同的test之間相互共享着用,稍微改一下就能跑
術語說明
International Software Testing Qualifications Board (ISTQB)用的術語,和googletest里不一樣。
ISTQB/課本 | GoogleTest老版本 | GoogleTest新版本 |
---|---|---|
Test Suite | Test Case | TestSuite |
Test Case | Test | Test |
基本概念
Assertions
使用ASSERT_XXX()
和EXPECT_XXX()
來執行測試。
用ASSERT_EQ()
來確保結果一致,不一致就停止。
用EXPECT_EQ()
來檢查結果一致,不一致的話依然繼續執行,但是給出提示。
ASSERT_EQ()
和EXPECT_EQ()
都可以制作流,因此可以接一個<<"message"
來作為提示。
可用宏列表
-
ASSERT_TRUE
-
ASSERT_FALSE
-
ASSERT_EQ
-
ASSERT_NE
: 不等於 -
ASSERT_GT
: > -
ASSERT_LE
: <= -
ASSERT_LT
: < -
ASSERT_GE
: >= -
ASSERT_STREQ
:字符串相等 -
ASSERT_STRNE
:字符串不等 -
ASSERT_STRCASEEQ
:不考慮大小寫時相等 -
ASSERT_STRCASENE
:不考慮大小寫是不等 -
EXPECT_TRUE
-
EXPECT_FALSE
-
EXPECT_EQ
-
EXPECT_NE
: 不等於 -
EXPECT_GT
: > -
EXPECT_LE
: <= -
EXPECT_LT
: < -
EXPECT_GE
: >= -
EXPECT_STREQ
:字符串相等 -
EXPECT_STRNE
:字符串不等 -
EXPECT_STRCASEEQ
:不考慮大小寫時相等 -
EXPECT_STRCASENE
:不考慮大小寫是不等
簡單的測試寫法
TEST(TestSuiteName, TestName){
...
}
其中TestSuiteName
和TestName
必須是不含"_"的標志符。
復雜一點,還可以用TEST_F
,感覺有點復雜,和TEST
的區別可以看看這篇:https://blog.csdn.net/carolzhang8406/article/details/54668462