Gtest是Google公司发布的一款非常优秀的开源C/C++单元测试框架,已被应用于多个开源项目及Google内部项目中,知名的例子包括ChromeWeb浏览器、LLVM编译器架构、ProtocolBuffers数据交换格式及工具等。在我们开发规范的代码时候,要想办法构造简单的测试用例进行调试,因此针对gtest中的三种事件机制进行简单的分析。

Features

  • An xUnit test framework.
  • Test discovery.
  • A rich set of assertions.
  • User-defined assertions.
  • Death tests.
  • Fatal and non-fatal failures.
  • Value-parameterized tests.
  • Type-parameterized tests.
  • Various options for running the tests.
  • XML test report generation.

Platforms

Google test has been used on a variety of platforms:

  • Linux
  • Mac OS X
  • Windows
  • Cygwin
  • MinGW
  • Windows Mobile
  • Symbian
  • PlatformIO

github:https://github.com/google/googletest

doc:https://github.com/google/googletest/blob/master/googletest/docs/primer.m

参考:

  • http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html
  • https://www.cnblogs.com/jycboy/p/6057677.html
  • https://blog.csdn.net/vanturman/article/details/80930159

1. 安装

  • git clone https://github.com/google/googletest.git
  • cd googletest/
  • mkdir build
  • cd build/
  • cmake ..
  • make
  • sudo make install

2. 测试

2.1 代码test.c

#include <iostream>
#include <gtest/gtest.h>int add(int a, int b)
{return a + b;
}TEST(testCase, test0)
{EXPECT_EQ(add(2, 3), 5);
}int main(int argc, char **argv)
{testing::InitGoogleTest(&argc, argv);return RUN_ALL_TESTS();
}

2.2 编译

g++ test.cc -lgtest -lpthread -std=c++11

Note: -lpthread需要放在-lgtest后,否则编译会出错

2.3 测试

执行:a.out

baoli@ubuntu:~/tools/gtest/mytest$ ./a.out
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from testCase
[ RUN      ] testCase.test0
[       OK ] testCase.test0 (0 ms)
[----------] 1 test from testCase (0 ms total)[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (0 ms total)
[  PASSED  ] 1 test.

代码单元测试:gtest相关推荐

  1. 第二章 UT单元测试——GTest框架实例

    系列文章目录 第一章 UT单元测试--GoogleTest通用构建说明 第二章 UT单元测试--GTest框架实例 文章目录 系列文章目录 前言 一.环境配置 二.使用步骤 1.添加待测源码 2.修改 ...

  2. 51、前端代码单元测试怎么做?

    我们专栏课程的知识部分已经告一段落了.今天,我来集中解决一下大家在学习中遇到的问题,我争取用快问快答的形式,咱们多回答一些问题. 1. 前端代码单元测试还是非常有必要的,不知道老师这一块是怎么做的,能 ...

  3. 代码单元测试工具:gmock

    Mock,更确切地说应该是Mock Object.当我们在单元测试.模块的接口测试时,当这个模块需要依赖另外一个/几个类,而这时这些类还没有开发好,这时我们就可以定义Mock对象来模拟那些类的行为. ...

  4. 解决C++代码单元测试中的难题-不可验证和IO调用

    在做C++程序的单元测试时,大家经常会遇到两个问题: 1.不方便验证测试结果,原因是因为不可访问保护和私有类成员 2.对于需要访问的connect.receive.send等不好绕过 这里介绍两种方法 ...

  5. 测试专员如何编写优秀的测试代码·单元测试篇

    无论如何组织测试,无论有多少测试,如果你不能信任.维护以及阅读它们,这些测试就几乎没有价值.要成为优秀的测试,它们应该同时具有如下三个属性. 可靠性:开发人员希望运行的测试可靠,能够对测试结果有信心. ...

  6. 微信推文图片间距有缝的代码_使用记录接缝进行旧代码单元测试

    微信推文图片间距有缝的代码 在大多数情况下,使用遗留代码可能很困难. 但是,当涉及到添加新功能,重构或维护您不熟悉的代码时,它可能会变得势不可挡. 如果您已经使用敏捷技术几年了,并且突然间您面对大量的 ...

  7. Linux环境下C++单元测试Gtest 入门

    简介 Goodtest是一款强大的C++单元测试框架,可以在Linux,Windows上等多种平台上互动 可以在这里下载:https://github.com/google/googletest然后按 ...

  8. maven中实现代码单元测试覆盖率统计

    1.首先需要对统计模块的POM.XML增加如下字段: <build> <plugins> <plugin> <groupId>org.codehaus. ...

  9. 两步实现在C代码中快速集成gtest进行单元测试

    我平时的技术支持工作主要是快速阅读和调试代码,没有太多的代测试和验证需求,所以对单元测试一直没有留意. 直到我开始从头写一些密码学的基本功能代码,例如各种哈希算法,分组密码算法,流密码算法,分组密码的 ...

最新文章

  1. ida 中segment中的extern是什么
  2. Jenkins cve-2016-0792 漏洞复现 Xstream 反序列化漏洞
  3. python3 字符串替换 replace translate re.sub
  4. 基于MFCC系数的欧氏距离测量
  5. ES6-6 - this指向、箭头函数基本形式、rest运算符
  6. 发布react项目到linux服务器,nginx上部署react项目的实例方法
  7. 阿里99大促 | 模型识别背后的样本生成
  8. 日常问题———安装新版zookeeper 出现Starting zookeeper ... FAILED TO START
  9. Hbase入门——安装
  10. 一些上流的CSS3图片样式
  11. libevent: evbuffer缓冲
  12. Android基础(四) Fragment Part 1
  13. 【NOIP2012】【Luogu1075】质因数分解(模拟)
  14. HSRP热备份路由协议 、 STP生成树协议 、 总结和答疑
  15. 小程序cms系统服务器选择,如何三分钟为小程序打造管理后台
  16. Hamcrest 精萃
  17. 计算机组装所需要的主要配件有哪些,组装电脑需要哪些零件_组装电脑需要哪些配件...
  18. 轻松解决Tomcat启动慢的问题,只需一行代码
  19. PISCES: A Programmable, Protocol-Independent Software Switch(总结)
  20. 最新版Shiro-SpringBoot项目实战笔记

热门文章

  1. Linux shell命令最常用的快捷键
  2. 前端实现搜索记录功能
  3. 【JOURNAL】集花酒联
  4. 如何在vue-router的beforeEach钩子里做页面访问权限验证
  5. Activiti 中的 命令模式与责任链模式
  6. 理正地基基础计算机辅助设计的英文缩写,理正基础CAD软件介绍理正基础CAD软件介绍.pdf...
  7. python linux 时间格式化,Python3 格式化日期
  8. java不等于正整数怎么输入_关于java:测试输入是否为正整数
  9. python列表写入csv文件_将多个列表写入csv。Python中的文件
  10. c语言进程间通信架构,构建微服务之:微服务架构中的进程间通信