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