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
