GoogleTest入门

2022-10-19,

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){
...
}

其中TestSuiteNameTestName必须是不含"_"的标志符。

复杂一点,还可以用TEST_F,感觉有点复杂,和TEST的区别可以看看这篇:https://blog.csdn.net/carolzhang8406/article/details/54668462

GoogleTest入门的相关教程结束。

《GoogleTest入门.doc》

下载本文的Word格式文档,以方便收藏与打印。