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