用Visual Studio创建集成了gtest的命令行工程
gtest代码库中的sample代码
在gtest的代码库中,包含了10个sample的代码,覆盖了gtest的常见用法,sample的代码位于以下文件夹:
gtest\samples
由于gtest的代码库中并没有包含这些sample代码对应的msvc工程文件,所以需要我们自行创建。下面以把sample1的代码跑起来为目的,演示如何用Visual Studio创建一个集成了gtest的命令行工程。
用Visual Studio创建工程
Step1 创建名为samples的Win32 Console Application

Step2 在Application Settings中去掉Precompiled header勾选项

Step3 删掉向导自动生成的这些文件,保存后Close Solution。

Step4 向导自动生成的对我们有用的是以下三个文件:
- samples.sln
- samples.vcxproj
- samples.vcxproj.filters
把它们拷贝到gtest\msvc文件夹下,然后再重新打开samples.sln。
Step5 把gtest代码库下的这两个文件加入到工程中:
- gtest-all.cc
- gtest_main.cc

Step6 左侧目录树选择“Configuration Properties > C/C++ > General”,在右侧“Additional Include Directories”中添加Include路径,分别指向gtest的根目录和include目录:

Step7 再次确认一下没有使用Precompiled header

Step8 至此,我们已经创建好了一个集成了gtest的工程,它是一个命令行程序,编译之后运行效果如下:

添加测试和被测试代码
在上面这个工程中,加入sample1的测试和被测试代码,即形成了sample1的单元测试工程:

编译之后运行,即可看到测试用例的执行结果:

关于Precompiled header
上面的这个例子,从一开始创建工程就关闭了Precompiled header,这样做主要有以下两方面原因:
- gtest本身的代码是不需要使用预编译头的;
- sample1的测试代码也是不需要使用预编译头的。
但这种做法不一定适合于其它测试工程,比如说,当测试代码中包含了MFC派生类的时候,这种情况下的做法是打开整个工程的Precompiled header,单独关闭gtest-all.cc和gtest-main.cc的Precompiled header:

一句话小结就是,根据具体的测试代码来设置Precompiled header。

系列文章索引:http://www.cnblogs.com/duxiuxing/p/4270836.html
用Visual Studio创建集成了gtest的命令行工程的更多相关文章
- Visual Studio 2012系统环境变量设置(命令行)
方法1.运行脚本vsvars32.bat:D:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\vsvars32.bat ...
- Visual Studio创建跨平台移动应用_02.Cordova Extension
1简介 本章节是关于Visual Studio Tools for Apache Cordova的,目前此产品只发布了预览版.Visual Studio for Apache Cordova帮助熟悉V ...
- 使用 Cordova+Visual Studio 创建跨平台移动应用(1)
1简介 本章节是关于Visual Studio Tools for Apache Cordova的,目前此产品只发布了预览版.Visual Studio for Apache Cordova帮助熟悉V ...
- 使用Visual Studio创建简单的自己定义Web Part 部件属性
使用Visual Studio创建简单的自己定义Web Part 部件属性 自己定义属性使用额外的选项和设置拓展你的Web part部件.本文主要解说怎样使用Visual Studio创建简单的自己定 ...
- 使用Visual Studio 创建新的Web Part项目
使用Visual Studio 创建新的Web Part项目 Web Part是你将为SharePoint创建的最常见的对象之中的一个.它是平台构建的核心基块. 1. 管理员身份打开Visual St ...
- 使用Visual Studio 创建可视Web Part部件
使用Visual Studio 创建可视Web Part部件 可视Web Part部件是很强大的Web 部件.它提供内置设计器创建你的用户界面. 本文主要解说怎样使用Visual Studio 创建可 ...
- 【翻译】使用Visual Studio创建Asp.Net Core MVC (一)
This tutorial will teach you the basics of building an ASP.NET Core MVC web app using Visual Studio ...
- Visual studio 创建项目失败vstemplate
Visual studio 创建项目失败 提示 the vstemplate file references the wizard class 'Microsoft.VisualStudio.WinR ...
- Xamarin 中Visual Studio创建项目提示错误
Xamarin 中Visual Studio创建项目提示错误 错误信息:Object reference not set to an instance of an object 出现这种情况,是由于没 ...
随机推荐
- java生成Json工具之JsonSimple的使用
json-simple是由是Google开发的Java JSON解析框架,基于Apache协议.目前版本为1.1 项目主页:https://code.google.com/p/json-simple/ ...
- 解决zabbix图中出现中文乱码问题
我这周部署了zabbix监控服务器,但是配置过程中发现当有中文时,图中的中文会变成方块 如下图所示: 这个问题是由于zabbix的web端没有中文字库,我们最需要把中文字库加上即可 解决办法如下 1. ...
- AIDL跨进程通信
Android跨进程通信会用到AIDL,当然跨进程通信不一定要用AIDL,像广播也是可以的,当然这里用到AIDL相对比较安全一些: AIDL允许传递基本数据类型(Java 的原生类型如int/long ...
- 在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口
//继承thread类 class PrimeThread extends Thread{ long minPrime; PrimeThread(long minPrime) { this.minPr ...
- c# 用正则表达式获取开始和结束字符串中间的值
c# 用正则表达式获取开始和结束字符串中间的值 /// <summary> /// 获得字符串中开始和结束字符串中间得值 /// </summary> /// <para ...
- c-连接两个链表
概述 还是相对简单,不过要记得释放不用的头结点即可. 代码为: //将lList2头结点连接在lList1尾结点的后面. void combine(linklist lList1, linklist ...
- 牛顿法与拟牛顿法,DFP法,BFGS法,L-BFGS法
牛顿法 考虑如下无约束极小化问题: $$\min_{x} f(x)$$ 其中$x\in R^N$,并且假设$f(x)$为凸函数,二阶可微.当前点记为$x_k$,最优点记为$x^*$. 梯度下降法用的是 ...
- 重新开始学习javase_隐藏实施过程
一.隐藏实施过程 对于隐藏实施过程,thinking in java中讲了很好,无非就是一个好的程序尽量做到,对外公开的程序,即使内部程序发生变动,也不会影响这些公开的服务的使用 类的导入java中的 ...
- 0.0C语言重点问题回顾
左值和右值得区别:左值是用来表明变量的身份的,右值更加侧重于值本身: void*是个例外,它只有基地址没有类型信息,所以无法解引用. int *p = malloc(100); char *s = m ...
- [CentOS 0010] CentOS 配置mysql允许远程登录
Mysql为了安全性,在默认情况下用户只允许在本地登录,可是在有此情况下,还是需要使用用户进行远程连接,因此为了使其可以远程需要进行如下操作: 一.允许root用户在任何地方进行远程登录,并具有所有库 ...