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
