博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GTest基础学习-01-开发环境安装和配置
阅读量:4301 次
发布时间:2019-05-27

本文共 2527 字,大约阅读时间需要 8 分钟。

       新学习一个知识点,学习一个主流的C++单元测试框架googletest,简称GTest。GTest也模仿了XUnit单元测试框架的风格,由于C++语言的特点,GTest一般都是开发人员使用,而且使用真的不算多,因为开发人员都不喜欢写测试代码。如果想要做C++产品的白盒测试或者接口测试,学习GTest是一个比较好的单元测试框架,会帮助我们提升编写单元测试用例的速度。

       GTest网上有很多文章,很多都是介绍第一篇环境搭建,然后就不了了之。确实看到过一位大牛写过GTest的一个系列文章,写的很好。我想我接下来写的一个学习笔记,会参考这个系列。我的想法是,写的更详细一些,让更多测试开发能够参与到C++的单元测试中来。

 

开发环境简介

  • VS 2015 Update03版本,很多企业目前还是使用这个版本来开发C++软件产品
  • Cmake-gui.exe,用来编译C++,但是我们这里只是使用到一次,和本次单元测试关联很小
  • googletest, 这个直接在github进行下载zip到本地。

这里重点介绍googletest的环境配置过程。其实vs 2017社区版本也可以,cmake-gui.exe下载比较费劲,官网基本上下载不了,大家自行搜索解决。

 

1.GTest版本和下载

下载地址:

这个页面是googletest发版页面,可下载不同版本,这里我当然选择最新v1.10.0版本

点击上面那个zip,下载到本地。

 

2.Cmake-gui.exe编译GTest生成VS工程

解释一些这里为什么要使用cmake-ui.exe,主要是现在的企业开发,基本上都是基于64位操作系统。网上介绍GTest的文章都是32位版本。这里利用Cmake-gui.exe可以帮助我们生成32位还是64位,哪一个VS版本可以打开的工程文件。具体操作如下

上面解压出来zip文件内容结构如下

一般来说单元测试用GTest就可以,有时候需要打桩做白盒测试,可以使用GMock框架。到这里,我们依然不知道怎么打开这个工程,获取相关的GTest头文件和lib文件。

先在这文件夹下新建一个bin文件夹,待会用来输出编译之后的文件内容

到以上路径,双击打开cmake-ui.exe,

先上面两个文件路径选择如上图,点击Confiure,弹出页面设置如下

这是关键,能选择x64,如果你是vs2017 第一个就选vs 2017,这里我用vs 2015,点击Finish,等待一会出现如下页面

点击Generate,几秒最后一行日志显示 Generate done,一般这里不会出错。关闭这个对话框,到bin文件夹看看

上面红圈都是一些vs工程,选择红圈那个解决方案入口,双击,默认使用2015打开,接下来就可以进行编译。

接下来就可以选择Release还是Debug进行编译,如果不考虑多线程执行选项。

可右键gtest这工程,选择属性

这个多进程不同值可以参考你自己的实际项目,这里我们默认就好。

接下来开始编译 Debug X64

等一会,日志输出应该没有失败的

再次切换到Release X64 点击编译。然后可以关闭这个VS 解决方案,退出VS,接下来看看编译之后的GTest的文件夹内容

我们主要是获取Debug或Release下的gtest和gmock相关的lib文件,后续会用到

以上是lib文件的路径,需要区分debug和release版本,上面Debug文件夹中gtestd.lib, 这个d单词表示debug。

顺便找到include的文件夹位置

 

3.GTest工程创建和配置

打开VS2015,新建一个解决方案。选择win32控制台应用程序,取一个名称LearnGtest

点击确定,然后一直点击默认下一步,直到完成向导,看到下面页面

接下来开始配置工程属性,需要用到上面Gtest的include文件夹路径和相关lib文件

1.先配置Debug X64环境

虽然我们选择win32 控制台类型,默认是x86,这里我们改成Debug x64.

点击解决方案名称,右键-属性

根据上面红圈位置,点击找到上面这张图,然后添加debug的gtest的include文件夹的路径

点击确定,然后点击左侧 “链接器”

点击右侧,这里添加debug版本的gtestd.lib

点击 两次确定 关闭属性配置页面

 

2.找到main入门,修改代码如下

LearnGtest.cpp代码修改如下并保存

// LearnGtest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "gtest/gtest.h"int main(int argc, char **argv){    testing::InitGoogleTest(&argc, argv);    return RUN_ALL_TESTS();}

点击 生成-生成解决方案,观察日志

这个错误是我们当前VS工程LearnGtest的属性面板中关于多线程这块选择值和我们最早编译Gtest这块不一致,改成一致就好。这里我们是练习项目,所以该LearnGtest工程属性就好。如果是实际工作项目,肯定需要回到VS 2015打开Gtest,把多线程改成和项目一致,再次编译debug和relase版本的Gtest.

这里改成和gtest Debug类型一致就可以,再次点击生成解决方案

到了这里,没有出错,很好,然后来运行这个main方法,看看输出内容

到了这里,表示我们Debug版本下gtest环境搭建成功。接下来和上面截图步骤一样,也需要把Release的搭建好。

也需要改多线程,这里是选择MT。确保在Release环境也能生成解决方案成功,点击调试-开始执行(不调试)运行后可以打开cmd控制台,打印gtest PASS的输出内容。

 

到这里,我们接下来需要学习Gtest的开发环境都配置完成。这里头文件和lib都是用gtest,如何后面需要使用到gmock,我们当前LearnGtest这个工程可以把gmock相关的lib和头文件配置好,也就可以使用gmock的功能。

 

 

转载地址:http://gexws.baihongyu.com/

你可能感兴趣的文章
在C++里,有两种方法创建对象:
查看>>
浅谈C/C++中的指针和数组(一)
查看>>
C++中引用(&)的用法和应用实例
查看>>
C++中重载与重写函数区别及虚函数(转载)
查看>>
指针作为函数形参
查看>>
c#中的静态构造函数
查看>>
用c#绘制曲线图
查看>>
C++中重写与覆写(虚函数virtual)的区别
查看>>
duilib入门问题集
查看>>
堆栈数据代码区
查看>>
C语言指针定义变量方式
查看>>
C#中常用的几种读取XML文件的方法
查看>>
C++(1) 指针 new 和delete
查看>>
C++的new
查看>>
在C#中使用SerialPort类实现串口通信 遇到多线程问题
查看>>
堆栈 学习笔记
查看>>
堆栈平衡
查看>>
堆栈数据代码区
查看>>
关于指针,可能是网上最详细的讲解了
查看>>
代码区,初始化全局数据区,BSS,堆区,栈区,程序环境变量区简介
查看>>