Google C++测试单元工具 gtest简单使用(win vs & linux)

转载于
作者:fengbingchun
地址:http://blog.csdn.net/fengbingchun/article/details/39667571


我的实践如下(win7, vs2010, gtest-1.7.0)

gtest的github地址如下:
https://github.com/google/googletest

可以下载一个release版本,比如
https://github.com/google/googletest/tree/release-1.7.0

这里写图片描述

  • 然后按照上面转载的博文,编译配置即可,生成相关的lib文件( 包括Debug和release版本 )

这里写图片描述

这里写图片描述


  • 按照转载的博文,直接在gtest解决方案下新建一个win32 console application,写好相应的文件

这里写图片描述

  • lib库添加(注意debug 和 release模式都要处理

gtest头文件添加
这里写图片描述

stdafx.cpp,如下

// stdafx.cpp : 只包括标准包含文件的源文件
// Testgtest.pch 将作为预编译头
// stdafx.obj 将包含预编译类型信息

#include "stdafx.h"

// TODO: 在 STDAFX.H 中
// 引用任何所需的附加头文件,而不是在此文件中引用
#ifdef _DEBUG  
#pragma comment(lib, "C:\\Users\\yy\\Desktop\\gtest1.7.0\\googletest-release-1.7.0\\msvc\\gtest\\Debug\\gtestd.lib")  
#pragma comment(lib, "C:\\Users\\yy\\Desktop\\gtest1.7.0\\googletest-release-1.7.0\\msvc\\gtest\\Debug\\gtest_maind.lib")  
#else  
#pragma comment(lib, "C:\\Users\\yy\\Desktop\\gtest1.7.0\\googletest-release-1.7.0\\msvc\\gtest\\Release\\gtest.lib")  
#pragma comment(lib, "C:\\Users\\yy\\Desktop\\gtest1.7.0\\googletest-release-1.7.0\\msvc\\gtest\\Release\\gtest_main.lib")   
#endif  
  • 测试
// Testgtest.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include <cstdio>
#include "fun.h" 

TEST(fun, add)  
{  
    EXPECT_EQ(1, add(2,-1)); // 正确 2 + -1 = 1 
    EXPECT_EQ(3, add(2,3));  // 错误 2 + 3 = 5 不是3
} 

int _tmain(int argc, _TCHAR* argv[])
{
    ::testing::InitGoogleTest(&argc, argv);  
    return RUN_ALL_TESTS();

    //printf("%d",add(1,2));
    //return 0;
}

直接运行正常(包括debug和release模式),并可以清楚的看到测试结果
这里写图片描述



现在随意在哪个目录建立一个项目都能够使用gtest

  • 把gtest放到自己制定的位置,我放到了windows的e盘

这里写图片描述

  • 新建一个empty win32 console application
    同上,现在只需要fun.h 和一个main.cpp, 其他文件都不需要

这里写图片描述

  • 环境配置(项目属性的设置)

这里写图片描述

这里写图片描述

注意,release debug模式都要设置

对于C/C++ -> Code Generation -> Runtime Library 的属性,debug,release模式是不同的
Debug下, Multi-threaded Debug(/MTd) ,
Release下,Multi-threaded(MT);

  • 编写好文件,然后测试
    fun.h
#ifndef _FUN_H_  
#define _FUN_H_  

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

#endif//_FOO_H_

main.cpp

#include <cstdio>

#include "fun.h"


#include "gtest/gtest.h"

#ifdef _DEBUG  
#pragma comment(lib, "E:\\gtest1.7.0\\googletest-release-1.7.0\\msvc\\gtest\\Debug\\gtestd.lib")  
#pragma comment(lib, "E:\\gtest1.7.0\\googletest-release-1.7.0\\msvc\\gtest\\Debug\\gtest_maind.lib")  
#else  
#pragma comment(lib, "E:\\gtest1.7.0\\googletest-release-1.7.0\\msvc\\gtest\\Release\\gtest.lib")  
#pragma comment(lib, "E:\\gtest1.7.0\\googletest-release-1.7.0\\msvc\\gtest\\Release\\gtest_main.lib")   
#endif


TEST(fun, add)  
{  
    EXPECT_EQ(1, add(2,-1)); // 正确 2 + -1 = 1 
    EXPECT_EQ(3, add(2,3));  // 错误 2 + 3 = 5 不是3 
}

int main(int argc, char* argv[])
{
    ::testing::InitGoogleTest(&argc, argv);  
    return RUN_ALL_TESTS();  

    //printf("%d\n", add(1,2));
    //return 0;
}

这里写图片描述


windows vs 安装gtest小结

1. 编译gtest,设置环境变量,添加头文件

gtest github下载一个release版本,然后分别debug 和 release下生成 会生成相应的lib

可以设置一个环境变量

GTEST = E:\gtest1.7.0\googletest-release-1.7.0

cmd下打印查看

echo %GTEST%

项目=》配置属性=》C/C++=》常规=》附加包含目录

$(GTEST)\include
2.0 lib库依赖添加

链接器=》输入=》附加依赖项
Debug : gtestd.lib, gtest_maind.lib

$(GTEST)\msvc\gtest\Debug\gtestd.lib
$(GTEST)\msvc\gtest\Debug\gtest_maind.lib

Release : gtest.lib,gtest_main.lib

$(GTEST)\msvc\gtest\Release\gtest.lib
$(GTEST)\msvc\gtest\Release\gtest_main.lib
3.0 多线程运行设置

C/C++=》 Code Generation=》 Runtime Library ,
C/C++=》代码生成=》运行库
debug,release模式是不同的
Debug下, Multi-threaded Debug(/MTd) ,
Release下,Multi-threaded(MT);


gtest更多学习参考如下
https://github.com/doctording/gtest_cplusplus

gtest在linux的安装和初步使用参考
https://github.com/doctording/gtest_cplusplus/tree/master/linux_gtest

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值