最近公司要我学习Google的测试框架google test:https://github.com/google/googletest. GoogleTest是C++的测试框架,我一个学习Java的,开头好难啊。查了好多,才编译成功。总结下,帮助后来人,基本上比我查到的详细。

1.下载googletest: https://github.com/google/googletest

2.以VS为例,在VS中导入msvc/gtest.sln,然后重新编译,debug、release两个模式都要编译。编译后,在msvc/gtest/下有debug、release两个文件夹。

msvc\gtest\Debug - Debug方案下的二进制文件:gtestd.lib、gtest_maind.lib(注意主文件名的d后缀)
  msvc\gtest\Release - Release方案下的二进制文件:gtest.lib、gtest_main.lib

至此,准备阶段完成。(也可以不用VS构建,用Xcode、GNU make、 Borland C++ Builder)。

3.创建具体的测试项目

3.1  在VS2015中,创建WIN32控制台应用;

3.2  右击工程名,点击“属性”,配置工程属性; 展开“配置属性——C/C++——常规”,在“附加包含目录”中添加“.\gtest-1.7.0\include”(省略部分为gtest-1.8.0的路径);

3.3  展开“C/C++——代码生成”,在“运行库”中修改为“多线程调试(/MTd)”;(其实你也可以选择动态链接(/MD),前提是你之前编译的gtest也使用了同样是/MD选项

3.4 展开“链接器——输入”,在“附加依赖项”中添加第二步生成的gtestd.lib,附加上正确的路径;在这里有个小技巧,.lib是静态库文件,你可以把它们放到一个专门的lib文件夹下,lib文件夹放哪自己看着办吧,我是放在了googletest文件夹下。

上述是以Debug模式为例,Release模式就是把3.3、3.4换成对应于Release的就可以。

4. 项目代码

stdafx.h:

#include "targetver.h"

#include <stdio.h>
#include <tchar.h>

  FirstGtest.cpp:

#include "stdafx.h"
#include <gtest\gtest.h> int _tmain(int argc, _TCHAR* argv[])
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}

  add.cpp:

#include "stdafx.h"

int Add(int a, int b)
{
return a + b;
}

  testCase.cpp:

#include "stdafx.h"
#include <gtest\gtest.h>
extern int Add(int a, int b); TEST(testCase, test0)
{
EXPECT_EQ(14, Add(4, 10));//EXPECT_EQ是比较两个值是否相等
} TEST(testCase, test1)
{
/*本用例不过*/
EXPECT_EQ(6, Add(5, 7));
} TEST(testCase, test2)
{
EXPECT_EQ(28, Add(10, 18));
}

  从上边可以看出:3个测试中一个失败,两个成功。

5. 编译成功如下:

6.如果出现以下错误:就是3.3步修改错了。

7.Release模式下:

3.3  展开“C/C++——代码生成”,在“运行库”中修改为“多线程(/MT)”;

3.4 展开“链接器——输入”,在“附加依赖项”中添加第二步生成的gtest.lib,附加上正确的           路径;

OK。

VS2015搭建GoogleTest框架--配置第一个项目的更多相关文章

  1. 手把手教你如何新建scrapy爬虫框架的第一个项目(上)

    前几天给大家分享了如何在Windows下创建网络爬虫虚拟环境及如何安装Scrapy,还有Scrapy安装过程中常见的问题总结及其对应的解决方法,感兴趣的小伙伴可以戳链接进去查看.关于Scrapy的介绍 ...

  2. maven项目快速搭建SSM框架(一)创建maven项目,SSM框架整合,Spring+Springmvc+Mybatis

    首先了解服务器开发的三层架构,分配相应的任务,这样就能明确目标,根据相应的需求去编写相应的操作. 服务器开发,大致分为三层,分别是: 表现层 业务层 持久层 我们用到的框架分别是Spring+Spri ...

  3. 手把手教你如何新建scrapy爬虫框架的第一个项目(下)

    前几天小编带大家学会了如何在Scrapy框架下创建属于自己的第一个爬虫项目(上),今天我们进一步深入的了解Scrapy爬虫项目创建,这里以伯乐在线网站的所有文章页为例进行说明. 在我们创建好Scrap ...

  4. 【原】Python学习_Django搭建环境及创建第一个项目

    1.Window 平台安装 Python 下载安装包    https://www.python.org/downloads/windows/ 2.Pyhton环境变量配置 右键点击"计算机 ...

  5. IDEA搭建ssm框架测试衍生出的问题The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:\Develop\jdk7\jdk1.7.0_79\bin;

    最近玩起IDEA这开发工具,搭建ssm框架测试时,部署项目出现如下问题: 信息: The APR based Apache Tomcat Native library which allows opt ...

  6. 使用SpringMVC搭建第一个项目

    概述 使用SpringMVC搭建第一个项目,入门教程,分享给大家. 详细 代码下载:http://www.demodashi.com/demo/10596.html 一.概述 1.什么是Spring ...

  7. 利用maven开发springMVC项目(二)——框架配置

    申明:主要内容来源于大神博客(使用IntelliJ IDEA开发SpringMVC网站(二)框架配置),我只是用eclipse自己练习使用,记录下来也只是为了学习使用,没有任何的商业用途,侵权必删. ...

  8. 脚手架快速搭建springMVC框架项目

    apid-framework脚手架快速搭建springMVC框架项目   rapid-framework介绍:   一个类似ruby on rails的java web快速开发脚手架,本着不重复发明轮 ...

  9. 真分布式SolrCloud+Zookeeper+tomcat搭建、索引Mysql数据库、IK中文分词器配置以及web项目中solr的应用(1)

    版权声明:本文为博主原创文章,转载请注明本文地址.http://www.cnblogs.com/o0Iris0o/p/5813856.html 内容介绍: 真分布式SolrCloud+Zookeepe ...

随机推荐

  1. Vue.js实现checkbox的全选和反选

    小颖之前写的代码存在一个bug,就是当你选择全选的时候去掉后面的一个选项,再点全选结果就是反的了.很感谢博客园的朋友帮我改了这个问题嘻嘻,下面一起来看看具体是怎么实现的吧. 1.html <te ...

  2. Linux添加用户(user)到用户组(group)

    将一个用户添加到用户组中,千万不能直接用: usermod -G groupA 这样做会使你离开其他用户组,仅仅做为 这个用户组 groupA 的成员. 应该用 加上 -a 选项: usermod - ...

  3. matlab基础教程——根据Andrew Ng的machine learning整理

    matlab基础教程--根据Andrew Ng的machine learning整理 基本运算 算数运算 逻辑运算 格式化输出 小数位全局修改 向量和矩阵运算 矩阵操作 申明一个矩阵或向量 快速建立一 ...

  4. PHP中常见魔术方法解析

    <?php class info { private $province; //省 public $city; //城市 private $myname; //姓名 //__construct( ...

  5. Spring加载xsd引起的问题小记

    前言 最近要把之前写好的监控系统加上报警功能,就是通过rpc调用发短信发邮件的服务发送报警信息.发短信发邮件的功能是通过dubbo管理提供的.自然使用这些服务就难免用到spring.而我这又是一个st ...

  6. eclipse maven update error 解决方法

    eclipse  maven  update error 解决方法     本来真不想写这篇博文的,但是eclipse和maven真的是太操蛋了,动不动就出了一些乱七八糟的问题,记录一下.希望公司能早 ...

  7. 淘宝购物车页面 智能搜索框Ajax异步加载数据

    如果有朋友对本篇文章的一些知识点不了解的话,可以先阅读此篇文章.在这篇文章中,我大概介绍了一下构建淘宝购物车页面需要的基础知识. 这篇文章主要探讨的是智能搜索框Ajax异步加载数据.jQuery的社区 ...

  8. ES6笔记系列

    ES6,即ECMAScript 6.0,ES6的第一个版本是在2015年发布的,所以又称作ECMAScript 2015 如今距ES6发布已经一年多的时间,这时候才去学,作为一个JSer,羞愧羞愧,还 ...

  9. 微信浏览器是移动端的IE6?微信升级内核后Html5和CSS3兼容性总结

    今年4月,自从微信浏览器X5 升级Blink内核之后,各前端社区一片高潮,仿佛看到了前端er,眼含热泪进而抱头痛头的说:终于可以不用兼容这"移动端的IE6 "了,可以早点回家了!! ...

  10. iOS通过ARC管理内存(内容根据iOS编程编写)

    栈 当程序执行某个方法(或函数)时,会从内存中一个叫栈的区域分配一块内存空间,这块内存空间我们叫帧.帧负责保护程序在方法内声明的变量的值.在方法内声明的变量我们称之为局部变量. 当我们的程序开始启动, ...