GoogleTest入门
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
GoogleTest入门的更多相关文章
- 【C++】GoogleTest入门指南
参考: GoogleTest官网 基本概念 要使用GoogleTest,需要包含header gtest/gtest.h 断言Assertions 断言是检查条件是否为真的语句,其结果可能是成功或失败 ...
- GoogleTest 之路2-Googletest 入门(Primer)
Why googletest? 为啥要用GoogleTest呢? googletest 是由测试技术Team 开发的带有google 特殊的需求和限制的测试框架. 不管你在什么平台上写C++代码,go ...
- Google C++单元测试框架GoogleTest(总)
之前一个月都在学习googletest框架,对googletest的文档都翻译了一遍,也都发在了之前的博客里,另外其实还有一部分的文档我没有发,就是GMock的CookBook部分:https://g ...
- VScode 使用 CMake 入门
参考 CMake 入门实战 在 linux 平台下使用 CMake 生成 Makefile 并编译的流程如下: 编写 CMake 配置文件 CMakeLists.txt . 执行命令 cmake PA ...
- 【C++】GoogleTest进阶之gMock
gMock是什么 当我们去写测试时,有些测试对象很单纯简单,例如一个函数完全不依赖于其他的对象,那么就只需要验证其输入输出是否符合预期即可. 但是如果测试对象很复杂或者依赖于其他的对象呢?例如一个函数 ...
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...
- ABP入门系列(1)——学习Abp框架之实操演练
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...
- Oracle分析函数入门
一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...
- Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数
上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...
随机推荐
- 使用WireMock快速伪造RESTful服务
⒈下载WireMock独立运行程序 http://wiremock.org/docs/running-standalone/ ⒉运行 java -jar wiremock-standalone-2.2 ...
- vue中过滤器filters的使用
组件内写法 filters:{ filter:function(data,arg1,arg2){ return .... } } 全局写法 filters('filter',function(data ...
- GAN_李弘毅讲解
GAN_李弘毅讲解: 上式中,xi从data中sample的一部分,现在的目的就是最大化这个似然函数,使得Generator最可能产生data中的这些sample: 上式中之所以如此设计V函数,是为了 ...
- css3新属性运用
1.css3新单位vh.vw,这个单位是相对显示窗口的宽度或高度 vh等于viewport高度的1/100.例如,如果浏览器的高是900px,1vh求得的值为9px.同理,如果显示窗口宽度为750px ...
- a.py
#!/usr/bin/python # -*- coding: UTF-8 -*- import os import sys import re import shutil import glob d ...
- 牛客国庆训练,CCPC Camp DAY1 J 倍增,括号匹配
https://www.nowcoder.com/acm/contest/201#question 题意:中文不翻译了 解法的个人理解: 对于一个合法的区间$[L,R]$ 1.显然其左括号的匹配位置都 ...
- mysql alter 效率
2017年9月15日 10:36:54 星期五 今天遇到一个效率问题记下来: 场景: mysql要更改一下表字段的注释, 因为sql语句问题, 导致更新了整张表.. 错误: ) UNSIGNED ' ...
- LabVIEW 获取本机多个ip地址
图 1 网上见了好多设置的,都没讲清楚,在这里整理一下本机ip地址的获取问题.关键在"字符串向ip地址转换"函数的设置上面,见下图2,选择多输出就能获取本机的多个ip地址,若不 ...
- 关于EditText一些效果
效果如图,由TextView View(竖线) EditText与ImageView组成 首先更改draw able中shape代码 <?xml version="1.0" ...
- Laravel 5.2服务----用户验证Auth相关问题
关于laravel的auth()用户认证这一块,面前我也是,有用到,有碰到什么问题我就记录下来. 手动认证用户 <?php namespace App\Http\Controllers; use ...