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_TRUEASSERT_FALSEASSERT_EQASSERT_NE: 不等于ASSERT_GT: >ASSERT_LE: <=ASSERT_LT: <ASSERT_GE: >=ASSERT_STREQ:字符串相等ASSERT_STRNE:字符串不等ASSERT_STRCASEEQ:不考虑大小写时相等ASSERT_STRCASENE:不考虑大小写是不等EXPECT_TRUEEXPECT_FALSEEXPECT_EQEXPECT_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-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...
随机推荐
- Zookeeper学习笔记1
参考:从Paxos到Zookeeper分布式一致性原理与实践 从ACID到CAP/BASE ACID 事务(Transaction),一般是指要做的或所做的事情.在计算机术语中是指访问并可能更新数据库 ...
- Gitlab 备份迁移恢复报错gtar: .: Cannot mkdir: No such file or directory
1. 版本信息 OS: centos 6.9 Gitlab: gitlab-ce.10.7.4 gitlab-ce.10.8.0 gitlab-ce.10.8.3 gitlab-ce.10.8.4 2 ...
- curl的http上传文件代码
int http_post_file(const char *url, const char *user, const char *pwd, const char *filename){ ass ...
- where(泛型类型约束)
.NET支持的类型参数约束有以下五种: where T : struct T必须是一个结构类型 where T : class T必须是一个类(class)类型,不能是结构(structure)类型 ...
- maven项目板块的pom.xml配置
项目名为helloweb 项目文件结构图1 helloweb>pom.xml内容如下: <project xmlns="http://maven.apache.org/POM/4 ...
- Centos 7 安装Docker-ce记录
以前尝试过在centos 6上安装Docker , 需要升级内核,支持aufs,比较麻烦:在使用过程中出现过Docker挂掉的情况,官方建议在64 位 centos 7 上运行,本文将安装步骤记录下来 ...
- String类型作为方法的形参
代码: public class TestString { String str = new String("good"); char [] ch = {'a','b','c'}; ...
- Metrics介绍和Spring的集成
参考: http://colobu.com/2014/08/08/Metrics-and-Spring-Integration/ https://www.cnblogs.com/yangecnu/p/ ...
- Stetho简化Android调试(二)
Stetho简化Android调试(一) 一文中讲述了如何使用Stetho结合Chrome远程调试Android App. Stetho给我们调试带来很大的便利,效率显著提升的同时也产生一个问题:如果 ...
- checkstyle.xml Code Style for Eclipse
1. Code Templates [下载 Code Templates] 打开 Eclipse -> Window -> Preferences -> Java -> Cod ...