准备工作

安装包:gtest1.7.0版本(最新的1.8.0版本一直安装失败,1.7.0版本一次成功)

安装链接:百度网盘 https://pan.baidu.com/s/1mDy9sB3sBIMei-IM08SWYw  提取码 5t7f

系统:centos 7.4版本

安装过程

1.进入gtest-1.7.0目录。

2.当前目录打开终端 输入命令 cmake CMakeLists.txt 。

注:如果cmake失败,可能是没有安装cmake,需要输入su命令进入root,然后输入yum install cmake命令。

3.接着输入make命令。

4.可以看到目录下生成了两个文件 libgtest.a 和 libgtest_main.a,.a文件是linux下的静态链接库文件,在windows下是.lib文件。

5.输入su命令进入root。

6.输入命令 cp libgtest*.a  /usr/lib  ,把这两个链接库文件添加到系统路径。

7.输入命令 cp -r include/gtest /usr/include ,把头文件添加到系统路径。

测试

gtest1.7.0目录下的samples目录里面是样例文件,通过它们来测试是否安装成功。

1.进入samples目录。

2.输入命令 g++ sample1.cc sample1_unittest.cc -lgtest -lgtest_main -lpthread -o test1 ,可以看到目录下多了一个名叫test1的文件。

[wanghe@localhost samples]$ g++ sample1.cc sample1_unittest.cc -lgtest -lgtest_main -lpthread -o test1
[wanghe@localhost samples]$ ls
prime_tables.h        sample2_unittest.cc  sample6_unittest.cc
sample10_unittest.cc  sample3-inl.h        sample7_unittest.cc
sample1.cc            sample3_unittest.cc  sample8_unittest.cc
sample1.h             sample4.cc           sample9_unittest.cc
sample1_unittest.cc   sample4.h            test1
sample2.cc            sample4_unittest.cc
sample2.h             sample5_unittest.cc

输入命令 ./test1 执行

[wanghe@localhost samples]$ ./test1
Running main() from gtest_main.cc
[==========] Running 6 tests from 2 test cases.
[----------] Global test environment set-up.
[----------] 3 tests from FactorialTest
[ RUN      ] FactorialTest.Negative
[       OK ] FactorialTest.Negative (0 ms)
[ RUN      ] FactorialTest.Zero
[       OK ] FactorialTest.Zero (0 ms)
[ RUN      ] FactorialTest.Positive
[       OK ] FactorialTest.Positive (0 ms)
[----------] 3 tests from FactorialTest (0 ms total)[----------] 3 tests from IsPrimeTest
[ RUN      ] IsPrimeTest.Negative
[       OK ] IsPrimeTest.Negative (0 ms)
[ RUN      ] IsPrimeTest.Trivial
[       OK ] IsPrimeTest.Trivial (0 ms)
[ RUN      ] IsPrimeTest.Positive
[       OK ] IsPrimeTest.Positive (0 ms)
[----------] 3 tests from IsPrimeTest (0 ms total)[----------] Global test environment tear-down
[==========] 6 tests from 2 test cases ran. (0 ms total)
[  PASSED  ] 6 tests.

出现这样的情况证明安装成功,否则会报很多错误!

3.再测试一个,输入命令 g++ sample1.cc sample3-inl.h sample5_unittest.cc -lgtest -lgtest_main -lpthread -o test2 ,会出现一个名叫test2的文件。

[wanghe@localhost samples]$ g++ sample1.cc sample3-inl.h sample5_unittest.cc -lgtest -lgtest_main -lpthread -o test2
[wanghe@localhost samples]$ ls
prime_tables.h        sample2_unittest.cc  sample6_unittest.cc
sample10_unittest.cc  sample3-inl.h        sample7_unittest.cc
sample1.cc            sample3_unittest.cc  sample8_unittest.cc
sample1.h             sample4.cc           sample9_unittest.cc
sample1_unittest.cc   sample4.h            test1
sample2.cc            sample4_unittest.cc  test2
sample2.h             sample5_unittest.cc

输入./test2执行

[wanghe@localhost samples]$ ./test2
Running main() from gtest_main.cc
[==========] Running 4 tests from 2 test cases.
[----------] Global test environment set-up.
[----------] 2 tests from IntegerFunctionTest
[ RUN      ] IntegerFunctionTest.Factorial
[       OK ] IntegerFunctionTest.Factorial (0 ms)
[ RUN      ] IntegerFunctionTest.IsPrime
[       OK ] IntegerFunctionTest.IsPrime (0 ms)
[----------] 2 tests from IntegerFunctionTest (0 ms total)[----------] 2 tests from QueueTest
[ RUN      ] QueueTest.DefaultConstructor
[       OK ] QueueTest.DefaultConstructor (0 ms)
[ RUN      ] QueueTest.Dequeue
[       OK ] QueueTest.Dequeue (0 ms)
[----------] 2 tests from QueueTest (0 ms total)[----------] Global test environment tear-down
[==========] 4 tests from 2 test cases ran. (0 ms total)
[  PASSED  ] 4 tests.

下面编写一个简单样例,文件名为fk.cpp:

#include<iostream>
#include<gtest/gtest.h>
using namespace std; int Abs(int x)
{return x > 0 ? x : -x;
}TEST(IsAbsTest,HandlerTrueReturn)
{ASSERT_TRUE(Abs(1) == 1) << "Abs(1)=1"; //ASSERT_TRUE期待结果是true,operator<<输出一些自定义的信息ASSERT_TRUE(Abs(-1) == 1) << "Abs(-1)=1";ASSERT_FALSE(Abs(-2) == -2); //期待结果是falseASSERT_EQ(Abs(1),Abs(-1));ASSERT_NE(Abs(-1),0);ASSERT_LT(Abs(-1),2);ASSERT_GT(Abs(-1),0);ASSERT_LE(Abs(-1),2);ASSERT_GE(Abs(-1),0);
}

运行结果:

[wanghe@localhost ~]$ g++ fk.cpp -lgtest -lgtest_main -lpthread -o fk
[wanghe@localhost ~]$ ./fk
Running main() from gtest_main.cc
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from IsAbsTest
[ RUN      ] IsAbsTest.HandlerTrueReturn
[       OK ] IsAbsTest.HandlerTrueReturn (0 ms)
[----------] 1 test from IsAbsTest (0 ms total)[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (0 ms total)
[  PASSED  ] 1 test.

将第一条语句写成: ASSERT_FALSE(Abs(1) == 1) << “Abs(1)=1”,此时再次测试就会打印出自定义的出错信息了。

[wanghe@localhost ~]$ g++ fk.cpp -lgtest -lgtest_main -lpthread -o fk
[wanghe@localhost ~]$ ./fk
Running main() from gtest_main.cc
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from IsAbsTest
[ RUN      ] IsAbsTest.HandlerTrueReturn
fk.cpp:12: Failure
Value of: Abs(1) == 1Actual: true
Expected: false
Abs(1)=1
[  FAILED  ] IsAbsTest.HandlerTrueReturn (0 ms)
[----------] 1 test from IsAbsTest (0 ms total)[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (0 ms total)
[  PASSED  ] 0 tests.
[  FAILED  ] 1 test, listed below:
[  FAILED  ] IsAbsTest.HandlerTrueReturn1 FAILED TEST

总结

至此环境就算搭建好了,安装gtest1.8.0版本的时候怎么都安装不成功,最终选择回退到上一个版本,说明最新的未必是最好的,下一篇开始讲解如何写单元测试。

C语言单元测试之安装gtest教程及一个简单样例相关推荐

  1. ROS2入门教程—创建一个简单的订阅者和发布者(C++版)

    ROS2入门教程-创建一个简单的订阅者和发布者(C++版) 1 创建功能包 2 创建发布者节点 3 设置发布者节点依赖项 4 设置发布者节点编译规则 5 创建订阅者 6 编译并运行   节点是通过RO ...

  2. Ubuntu 18.04 安装 nginx 并搭建一个简单的网站

    目录 一.安装 nginx 二.设置 nginx 服务器模块 三.总结 四.参考资料 尽你所学(采用 html.或 CSS.或 Javascript 等)完成一个静态网页,比如制作一个简单的个人介绍网 ...

  3. Gluon-cv:安装使用以及目标检测算法样例

    最近学习了解到这个框架,自我感觉使用起来较为简单,官方开源的版本是基于mxnet实现的. 目标检测,跟踪,reid,gan里面都有相关网络样例 github地址:https://github.com/ ...

  4. diybox路由器设置教程_一个简单的无线路由器入门设置教程,非常实用

    原标题:一个简单的无线路由器入门设置教程,非常实用 分享给朋友们一个简单的无线路由器入门设置教程,教大家怎么使用无线路由器.如何设置使用,非常实用. 一.无线路由器基本使用方法 1.拿到手的无线路由器 ...

  5. java caeser_IDEA配置SSM(Spring-Spring MVC-MyBatis)环境(maven)教程-实现一个简单的API

    @[toc] 前言 本篇从安装到配置到实现一个简单的 API 全过程,意在教大家如何使用 IDEA 如何配置 SSM 框架,如何使用 maven 仓库,也是我走了一些些弯路才得以成功的,所以希望记录我 ...

  6. 安装GNS3以及实现一个简单的网络拓扑图

    双击(GNS3.exe)安装包按顺序安装就可以到下面的一个界面: 安装完成后路由器选项卡是灰色的(不可用),可以通过挂载的方式添加对应的路由器,因此必须挂载相应镜像,下面是相应的步骤: 找到文件中相应 ...

  7. BASIC语言下载安装配置教程(超级简单!)

    1.使用bing搜索"FreeBasic"不要打卡第一个网址,点开下面的"Download"选项,选择中间的下载选项进行下载. 2.打开安装程序,一步一步安装即 ...

  8. centOS7安装Python3教程,很简单

    注意:以下教程是让centOS7里面的Python2和Python3共存,并不是替换Python2. 一.检查系统是否有gcc gcc --version  --查询是否安装 gcc -v --查询版 ...

  9. 班迪录屏软件的安装使用教程,非常简单有手就行(手动滑稽)

    首先:下载这真的没有办法教了,不会的建议先双手抱头放下你的电脑,不要祸害它了,他也不容易 点击下边的链接下载即可 (1条消息) 实用软件系列----班迪录屏我认为市面上最好用的录屏软件之一免费分享-图 ...

最新文章

  1. Kubernetes搭建Zookeeper和Kafka集群
  2. rabbitmq最大连接数(Socket Descriptors)
  3. iPhone或让国内运营商划地为牢
  4. 图解JavaScript算法排序
  5. php 终止程序的方法——return、exit()、die()
  6. scrapy框架_Python:Scrapy框架
  7. 线程---生产者消费者问题
  8. 九度oj题目1008:最短路径问题
  9. apache 压缩html,Apache开启Gzip压缩设置方法
  10. CocosCreator-IOS 开发篇
  11. python调用v8_Python 安装 V8 引擎 – pyv8
  12. DXGI高帧率屏幕录像软件源码解析(声音捕获,抓屏,ffmpeg录像,MP4录像,flv录像,麦克风采集)(第2篇声音采集部分)
  13. Duckduckgo搜索引擎
  14. 颜值是第一生产力 - Windows Terminal
  15. element input限制输入数字
  16. QT在界面背景图设置后运行显示黑屏
  17. 拼多多-多多进宝 只有goods_id没有goods_sign如何获取商品详情,拼多多goods_sign
  18. 中移动收购米雷康姆在巴基斯坦子公司剩余股份
  19. 【十八掌●内功篇】第五掌:HDFS之基础知识
  20. Java知识点--类变量

热门文章

  1. StaMPS结合TRIAN 做GACOS大气校正
  2. OPPO技术开放日第六期丨OPPO安全解析“应用与数据安全防护”背后的技术
  3. 安卓ui xml_创建声明性XML UI语言
  4. C++ 数学与算法系列之高斯消元法求解线性方程组
  5. BASIS ADM 100标准课程中文版本
  6. Linux下载神器XDM,代替IDM
  7. 软件工程课堂作业(三)——Right-BICEP软件单元测试
  8. 比较出名的几种美国主机
  9. SpringBoot安全登录验证
  10. 经济学人翻译练习——肯•帕克斯顿的再次竞选是对德克萨斯共和党价值观的考验