GoogleTest入门

时间:2023-08-04 11:03:02

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是谷歌专门的测试框架团队开发的,跨平台,支持各种类型的测试。

理念:

  1. 测试应当具备独立性可重复性
  2. 良好的组织
  3. 可移植可重用
  4. 如果fail则提供尽可能多的信息
  5. 让用户专注于测试内容,避免做“家务活”
  6. 用起来快,不同的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