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

GoogleTest入门的更多相关文章

  1. 【C++】GoogleTest入门指南

    参考: GoogleTest官网 基本概念 要使用GoogleTest,需要包含header gtest/gtest.h 断言Assertions 断言是检查条件是否为真的语句,其结果可能是成功或失败 ...

  2. GoogleTest 之路2-Googletest 入门(Primer)

    Why googletest? 为啥要用GoogleTest呢? googletest 是由测试技术Team 开发的带有google 特殊的需求和限制的测试框架. 不管你在什么平台上写C++代码,go ...

  3. Google C++单元测试框架GoogleTest(总)

    之前一个月都在学习googletest框架,对googletest的文档都翻译了一遍,也都发在了之前的博客里,另外其实还有一部分的文档我没有发,就是GMock的CookBook部分:https://g ...

  4. VScode 使用 CMake 入门

    参考 CMake 入门实战 在 linux 平台下使用 CMake 生成 Makefile 并编译的流程如下: 编写 CMake 配置文件 CMakeLists.txt . 执行命令 cmake PA ...

  5. 【C++】GoogleTest进阶之gMock

    gMock是什么 当我们去写测试时,有些测试对象很单纯简单,例如一个函数完全不依赖于其他的对象,那么就只需要验证其输入输出是否符合预期即可. 但是如果测试对象很复杂或者依赖于其他的对象呢?例如一个函数 ...

  6. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  7. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  8. Oracle分析函数入门

    一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...

  9. Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数

    上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...

随机推荐

  1. Java异常处理之try-with-resources

    Oracle官方文档: http://docs.oracle.com/javase/7/docs/technotes/guides/language/try-with-resources.html 概 ...

  2. python中“*”、"*args"、"kwargs"三种用法

    参考链接:https://www.cnblogs.com/cwind/p/8996000.html 注意的是: (1)"*"符号的用法很类似C++中的指针,针对列表; (2)&qu ...

  3. whistle工具全程入门

    接触过前后端开发的同学应该都了解网络请求代理工具fiddler(mac下面常用的是Charles),可以用来拦截分析请求.包装请求.本地调试和移动端代理开发调试等.多多少少,fiddler和Charl ...

  4. 设计模式C++学习笔记之四(Multition多例模式)

      多例模式,这个在GOF的模式设计里没有提到,但在实际工作中确实会用到.更详细的内容及说明可以参考原作者博客:cbf4life.cnblogs.com. 4.1.解释 main(),客户 略 说明: ...

  5. linux系统弱密码检测

    需要自备弱密码明文字典 from _utils.patrol2 import data_format,report_format,run_cmd import platform import cryp ...

  6. Ubuntu 18.04使用sudo pip3报错

    在使用sudo pip3 install python库的时候出现如下警告: The directory '/home/lzhu/.cache/pip/http' or its parent dire ...

  7. NOIP提高组—— 问题求解 与 完善程序

    问题求解1: 甲乙丙丁四人在考虑周末要不要外出郊游. 已知①如果周末下雨,并且乙不去,则甲一定不去:②如果乙去,则丁一定去:③如果丙去,则丁一定不去:④如果丁不去,而且甲不去,则丙一定不去.如果周末丙 ...

  8. css3时钟

    参考资料: 奇舞团: http://www.75team.com/archives/851 DEMO:demo 截图: 代码: <!DOCTYPE html> <html lang= ...

  9. MySQL的连接数

    我使用的数据库,没有针对其进行其他相关设置,最近经常出现连接异常,现象为太多的连接. MySQL查看最大连接数和修改最大连接数 1.查看最大连接数(可通过show variables查看其他的全局参数 ...

  10. delhpi:http超时设置(转载)

    原文地址:http://www.delphitop.com/html/kongjian/544.html var FHTTPClient:TIdHTTP; begin FHTTPClient := T ...