玩转Google开源C++单元测试框架Google
Test系列(gtest)(总)

前段时间学习和了解了下Google的开源C++单元测试框架Google Test,简称gtest,非常的不错。 我们原来使用的是自己实现的一套单元测试框架,在使用过程中,发现越来越多使用不便之处,而这样不便之处,gtest恰恰很好的解决了。

其实gtest本身的实现并不复杂,我们完全可以模仿gtest,不断的完善我们的测试框架, 但最后我们还是决定使用gtest取代掉原来的自己的测试框架,原因是:

1.不断完善我们的测试框架之后就会发觉相当于把gtest重新做了一遍,虽然轮子造的很爽,但是不是必要的。

2.使用gtest可以免去维护测试框架的麻烦,让我们有更多精力投入到案例设计上。

3.gtest提高了非常完善的功能,并且简单易用,极大的提高了编写测试案例的效率。

gtest的官方网站是:

http://code.google.com/p/googletest/

从官方的使用文档里,你几乎可以获得你想要的所有东西

http://code.google.com/p/googletest/wiki/GoogleTestPrimer

http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide

如果还想对gtest内部探个究竟,就把它的代码下载下来研究吧,这就是开源的好处,哈!

官方已经有如此完备的文档了,为什么我还要写呢?一方面是自己记记笔记,好记性不如烂笔头,以后自己想查查一些用法也可以直接在这里查到,一方面是对于不想去看一大堆英文文档的朋友,在我这里可以快速的找到gtest相关的内容。

下面是该系列的目录:

1.玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初识gtest

2.玩转Google开源C++单元测试框架Google Test系列(gtest)之二 - 断言

3.玩转Google开源C++单元测试框架Google Test系列(gtest)之三 - 事件机制

4.玩转Google开源C++单元测试框架Google Test系列(gtest)之四 - 参数化

5.玩转Google开源C++单元测试框架Google Test系列(gtest)之五 - 死亡测试

6.玩转Google开源C++单元测试框架Google Test系列(gtest)之六 - 运行参数

7.玩转Google开源C++单元测试框架Google Test系列(gtest)之七 - 深入解析gtest

8.玩转Google开源C++单元测试框架Google Test系列(gtest)之八 - 打造自己的单元测试框架

额外篇:

1.gtest中如何跳出当前测试案例

2.编写优美的GTest测试案例

3.gtest
参数化测试代码示例
 (内含完整工程示例)

软件测试Linux环境中清爽的Google Test (GTest)测试环境搭建【初级使用

本文将介绍单元测试工具google test(GTEST)在linux操作系统中测试环境的搭建方法。本文属于google
test使用的基础教程。在linux中使用google test之前,需要对如下知识有一些了解:

(1)C/C++编程方法

(2)makefile的编写

(3)linux命令行操作

(4)GTEST背景知识:它是用来干什么的?它用什么语言编写的?它的一些基本语法?等等

以上知识不需要做到熟能生巧,只要达到入门级别,使用GTEST不会费任何力气,毕竟GTEST也不是一个高门槛的工具。言归正传,我们来按照步骤逐一讲解:

Step 1:下载GTEST

下载链接为:https://code.google.com/p/googletest/downloads/list

目前GTEST的最新版本为gtest-1.7.0.zip,因此我们在本文中将以这个版本作为例子讲解。

Step 2:认识文件夹

下载并解压之后,就可以看到gtest-1.7.0文件夹了,里面的内容如下图所示

这么多文件乍一看确实有点让人摸不到头脑。其实,GTEST提供了对于多个不同平台的支持,例如msvc文件夹是用在微软Visual
Studio中,xcode文件夹是用于Mac Xcode,codegrear文件夹是用于Borland
C++ Builder,在linux环境中,我们用的内容就是make文件夹了。

Step 3:清除不需要的文件

前一步中我们已经讲到,很多文件是为了支持不同平台的,为了保持程序的简洁,避免混淆试听,我们在这一步把所有不需要的文件全部删除,只保留我们需要的。其实我们只需要4个文件夹,如下图所示。其余的文件以及文件夹全部删除(这一步并不是必须,但对于我们有洁癖的程序员来讲,容不得一堆不用的代码放在那~)。

好了,只剩下了四个文件夹,看上去是不是清爽了很多?其实打开make文件夹,你会发现里面只有一个Makefile文件。查看Makefile文件内容,得知这是系统给出的编译samples文件夹中的第一个sample的命令。但是打开sample文件夹,又看到里面一大坨源文件。在本入门教程中,我们先不考虑那些复杂的例子。因此,打开samples文件夹,开始删文件,删到只剩下如图所示的三个文件为止。

我们的程序越来越清爽了^_^。

Step 4:改写Makefile文件

此时如果你到make文件夹下,通过命令行执行 $ make && ./sample1_unittest 命令,可以看到测试的执行结果。不过如果打开Makefile查看一下,就会发现这个makefile只适用于编译sample1,如果我再增加一个被测的源文件呢?又要重新写makefile,太麻烦了。于是,在这一步,我们改写一下Makefile。

上一步我们讲到,现在只剩下4个文件夹(include,make,samples,src),既然make里面的唯一一个文件也要被改写,那也没必要留这个文件夹了。于是,在Step
4,你要做的第一件事情就是,把make文件夹,连同里面的Makefile文件全部删除……然后,进入samples文件夹,自己创建一个文件,名为Makefile,如图所示

然后,打开Makefile文件,写入以下内容,如图所示(不要把图中的行号也写进去哦~)。这个新的Makefile是由刚才被我们删除的Makefile改写而来的,如果你好奇的话可以比较一下它们之间的差别,里面涉及到一些makefile的语法和函数,如果不熟的话,你可能需要花费几分钟查一下资料去了解他们。

注意下图中改写的Makefile第32行,我们编译的是后缀名为cpp的文件,而原来给的例子却以cc结尾。因此,你还要做一件事情,就是把sample1.cc的文件名改为sample1.cpp,把sample1_unittest.cc的文件名改为sample1_unittest.cpp,就大功告成了。

现在我们的文件夹有三个(include,src,samples),我们自己被测的程序放在sample文件夹中。这个文件夹的名字看着也比较不爽,你可以把它改为mycode或者testcode,然后GTEST根目录的文件夹名称gtest-1.7.0也可以改为mygtest之类,用以满足我们完美主义者的需求。如图所示:

现在,进入命令行进行编译执行操作: $ make && ./run_test,就可以看到结果了,如图所示:

Step 5:添加自己的测试函数

到上面一步,其实我们的测试环境已经搭建完成。如果你现在有一个函数想要被测试一下,可以继续阅读Step 5。

假设我们现在有一个待测函数sqrt.cpp以及它的头文件sqrt.h,他们的内容如下:

(sqrt.cpp)

(sqrt.h)

(sqrt_unittest.cpp)

这个被测文件的作用是计算任意一个正整数的平方根,算法复杂度在log(n)级别。将以上三个文件放在mycode文件夹中,然后 make
&& ./run_test进行编译运行,就可以看到结果了:

总结:环境搭建完成之后,每次测试一个文件xxx.cpp以及它的xxx.h文件,就把这俩放入mycode文件夹,然后编写xxx_unittest.cpp测试文件,也放进去。然后到这个目录下用命令行 make
&& ./run_test就可以了,应该比最开使的时候方便了许多吧?要测试时,我们只需要三个文件放入mycode,然后命令行进入这个目录 make && ./run_test 即可完成测试。下面的图就是我现在的mycode文件夹了。xxx_unittest.cpp这个文件名并不是固定,取成别的也无所谓,只是这样更容易辨认哪一个文件是在测哪个函数而已。

当然,google test是一个非常强大的工具,以上所讲解的只是使用了它最最基本的功能,以及一个简单环境的搭建。其实需要用的文件就是Step
4中提到的那剩下的三个文件夹内容,进行适当的改写,就可以实现更加强大的功能。这些等到以后有机会再写啦。

Google的开源C++单元测试框架Google Test的更多相关文章

  1. 转:玩转Google开源C++单元测试框架Google Test系列

    转自http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 前段时间学习和了解了下Google的开源C++单元测试框架Google ...

  2. 玩转Google开源C++单元测试框架Google Test系列(转载)

    越来越多公司采用敏捷开发,单元和回归测试越来越重要,GTest作为最佳C++单元测试工具越来越多的被使用.转自 http://www.cnblogs.com/coderzh/archive/2009/ ...

  3. 玩转Google开源C++单元测试框架Google Test系列(gtest)(转)

    转自:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 前段时间学习和了解了下Google的开源C++单元测试框架Googl ...

  4. 玩转Google开源C++单元测试框架Google Test系列(gtest)(总)

    原文地址:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 前段时间学习和了解了下Google的开源C++单元测试框架Goo ...

  5. [转]玩转Google开源C++单元测试框架Google Test系列(gtest)(总)

    文章转载自CoderZh的技术博客 地址:https://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 前段时间学习和了解了下Goog ...

  6. [转]玩转Google开源C++单元测试框架Google Test系列

    gtest的官方网站是: http://code.google.com/p/googletest/ 从官方的使用文档里,你几乎可以获得你想要的所有东西 http://code.google.com/p ...

  7. Google开源C++单元测试框架Google Test

    1.玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初识gtest 2.玩转Google开源C++单元测试框架Google Test系列(gtest)之二 - ...

  8. 玩转Google开源C++单元测试框架Google Test系列(gtest)之八 - 打造自己的单元测试框架

    转载来源:https://www.cnblogs.com/coderzh/archive/2009/04/12/1434155.html 一.前言 上一篇我们分析了gtest的一些内部实现,总的来说整 ...

  9. 推荐:一个写的相当好的介绍C++单元测试框架Google Test (gtest) 教程

    原文来自:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 虽然有点晚了,还是一口气读完了全部文章.作者言简意赅和明快的风格 ...

随机推荐

  1. python---django使用cookie和session

    在views中的调用: def login(req): message='' if req.method == "POST": user = req.POST.get(" ...

  2. VMware vSphere克隆虚拟机

    参考资料:http://blog.csdn.net/shen_jz2012/article/details/48416771 1. 首先将你所要克隆的虚拟机关掉 2. 选择你的ESXI服务器     ...

  3. android MeasureSpec的三个测量模式

    1.MeasureSpec含义 其实可以去看MeasureSpec的文档,里面对MeasureSpec的作用介绍得很清楚.MeasureSpec封装了父布局传递给子布局的布局要求,每个MeasureS ...

  4. python2.7中MySQLdb的安装与使用详解

    Python2.7中MySQLdb的使用 import MySQLdb #1.建立连接 connect = MySQLdb.connect( '127.0.0.1', #数据库地址 'root', # ...

  5. 315道Python面试题答案

    目录 Python基础篇 1:为什么学习Python 2:通过什么途径学习Python 3:谈谈对Python和其他语言的区别 Python的优势: 4:简述解释型和编译型编程语言 5:Python的 ...

  6. IIS部署常见问题总结

    1.通过网站子目录访问后台管理 场景:前台和后台分为两个项目开发,域名只有一个(t.cn),作为前台的地址,后台的地址希望指定为 t.cn/admin 项目部署的时候,需要把后台项目转化为/admin ...

  7. WCF开发中将net.tcp协议寄宿到IIS的方法

    1 部署IIS 1.1 安装WAS IIS原本是不支持非HTTP协议的服务,为了让IIS支持net.tcp,必须先安装WAS(Windows Process Activation Service),即 ...

  8. 07 Go 1.7 Release Notes

    Go 1.7 Release Notes Introduction to Go 1.7 Changes to the language Ports Known Issues Tools Assembl ...

  9. postman发送json请求,使用案例

    介绍:  postman是一个很好的http模拟器,,可以发送get.post.put等各种请求,是测试服务接口相当好的工具. postman发送json请求,使用案例 发送json的具体步骤: 1. ...

  10. 使用BigDecimal转换较长小数时候出现科学计数法的问题

    public static String divToString(double v1, double v2, int scale){ if (scale < 0) { throw new Ill ...