文档章节

gtest的Linux使用(Google test)

胡漾
 胡漾
发布于 2015/04/30 14:47
字数 894
阅读 226
收藏 0

GTest是Google开发的跨平台而且开源的C++单元测试框架,很好很强大。

下载地址:https://code.google.com/p/googletest/

关于GTest在Windows下使用,CoderZh给出了十分详尽的使用指南:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html

我的工作环境:Ubuntu12.04, python 2.7, Makefile,SVN等

一、下载gtest文件 我用的是svn下载的。

svn checkout http://googletest.googlecode.com/svn/trunk/ gtest-svn

得到最新版的gtest,成功可以看到文件夹gtest-svn。

二、生成gtest静态库 先进入文件夹:

$cd gtest-svn

编译生成gtest-all.o文件(注意-I后无空格):

$g++ -I./include -I./ -c ./src/gtest-all.cc

再生成.a静态库文件:

$ ar -rv libgtest.a gtest-all.o

若成功,会在当前目录下生成libgtest.a库。可拷贝它到C++单元测试项目中去,以便使用。

三、编写简单功能函数 新建一个项目(目录)GTestApp,包含两个代码文件: functions.h, functions.cpp。 实现两个int变量的加减乘除功能。

//functions.h #ifndef _FUNCTIONS_H #define _FUNCTIONS_H

int add(int one,int two); int myMinus(int one,int two); int multiply(int one,int two); int divide(int one,int two); #endif //functions.cpp #include "functions.h" int add(int one,int two){ return one+two; } int myMinus(int one,int two){ return one-two; } int multiply(int one,int two){ return one*two; } int divide(int one,int two){ return one/two; } 四、编写单元测试代码 1、编写单元测试代码functionsTest.cpp

//functionsTest.cpp #include "gtest/gtest.h" #include "functions.h"

TEST(AddTest,AddTestCase){ ASSERT_EQ(2,add(1,1)); } TEST(MinusTest,MinusTestCase){ ASSERT_EQ(10,myMinus(25,15)); } TEST(MultiplyTest,MutilplyTestCase){ ASSERT_EQ(12,multiply(3,4)); } TEST(DivideTest,DivideTestCase){ ASSERT_EQ(2,divide(7,3)); } 2、编写测试代码TestAll.cpp

//TestAll.cpp #include "gtest/gtest.h" #include <iostream> using namespace std;

int main(int argc,char* argv[]) { //testing::GTEST_FLAG(output) = "xml:"; //若要生成xml结果文件 testing::InitGoogleTest(&argc,argv); //初始化 RUN_ALL_TESTS(); //跑单元测试 return 0; } 五、编译与运行测试 1、编译

  1. 复制gtest库文件

在GTestApp目录下新建lib目录,并复制libgtest.a到其中。

$mkdir lib

$cp <the path>/libgtest.a lib

  1. 复制gtest头文件

gtest1.6.0目录下的include包含了需使用到的头文件。把include复制到GTestApp中来。

3)编译和链接

$ g++ -o functions.o -c functions.cpp

$ g++ -o functionsTest.o -c funciontsTest.cpp -I./include

$ g++ -o TestAll.o -c TestAll.cpp -I./include

链接:

$ g++ -o main *.o -I./include -L./lib -lgtest -lpthread #注意不是-libgtest,同时需要用到 libpthread这个库

最后可以得到一个main的可执行文件

2、运行与测试

$./main

[==========] Running 4 tests from 4 test cases. [----------] Global test environment set-up. [----------] 1 test from AddTest [ RUN ] AddTest.AddTestCase [ OK ] AddTest.AddTestCase (0 ms) [----------] 1 test from AddTest (1 ms total)

[----------] 1 test from MinusTest [ RUN ] MinusTest.MinusTestCase [ OK ] MinusTest.MinusTestCase (0 ms) [----------] 1 test from MinusTest (0 ms total)

[----------] 1 test from MultiplyTest [ RUN ] MultiplyTest.MultiplyTestCase [ OK ] MultiplyTest.MultiplyTestCase (0 ms) [----------] 1 test from MultiplyTest (1 ms total)

[----------] 1 test from DivideTest [ RUN ] DivideTest.DivideTestCase [ OK ] DivideTest.DivideTestCase (0 ms) [----------] 1 test from DivideTest (3 ms total)

[----------] Global test environment tear-down [==========] 4 tests from 4 test cases ran. (8 ms total) [ PASSED ] 4 tests.

如果需要得到xml文件的话,可以这么做

首先先在main函数打开生成函数

testing::GTEST_FLAG(output) = "xml:";

再重新编译,生成main可执行文件。再执行下面操作。 $ ./main --gtest_output=xml

[==========] Running 4 tests from 4 test cases. [----------] Global test environment set-up. [----------] 1 test from AddTest [ RUN ] AddTest.AddTestCase [ OK ] AddTest.AddTestCase (0 ms) [----------] 1 test from AddTest (1 ms total)

[----------] 1 test from MinusTest [ RUN ] MinusTest.MinusTestCase [ OK ] MinusTest.MinusTestCase (0 ms) [----------] 1 test from MinusTest (1 ms total)

[----------] 1 test from MultiplyTest [ RUN ] MultiplyTest.MultiplyTestCase [ OK ] MultiplyTest.MultiplyTestCase (0 ms) [----------] 1 test from MultiplyTest (1 ms total)

[----------] 1 test from DivideTest [ RUN ] DivideTest.DivideTestCase [ OK ] DivideTest.DivideTestCase (0 ms) [----------] 1 test from DivideTest (0 ms total)

[----------] Global test environment tear-down [==========] 4 tests from 4 test cases ran. (4 ms total) [ PASSED ] 4 tests.

让我们再看下当前目录,用ls命令:可以看到有一个main.xml的文件,大功告成。

本文参考:

http://graybull.is-programmer.com/posts/37871.html

http://www.cnblogs.com/coderzh/archive/2009/03/31/1426758.html

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

© 著作权归作者所有

胡漾

胡漾

粉丝 3
博文 6
码字总数 1005
作品 1
闵行
程序员
私信 提问
Win32平台如何编译使用Google test编写的单元测试?

本博客 http://blog.csdn.net/livelylittlefish 贴出作者(三二一@小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正! 在Win32平台如何编译单元测试的代码?(readme文件并没有明确指出...

晨曦之光
2012/03/09
274
0
Linux平台如何编译使用Google test写的单元测试?

本博客 http://blog.csdn.net/livelylittlefish 贴出作者(三二一@小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正! 在Linux平台如何编译单元测试的代码?(请参考readme文件) Step1...

晨曦之光
2012/03/09
461
0
C++单元测试框架:gtest

[gtest]: https://code.google.com/p/googletest/ C++单元测试框架:[gtest][gtest] 1) 介绍 [gtest][gtest]是Google的C++测试框架,可以帮助开发者更简单快捷得写好C++单元测试。并且无论你...

加壹
2014/03/31
3.3K
0
使用Google Test的一个简单例子

本博客http://blog.csdn.net/livelylittlefish 贴出作者(三二一@小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正! 0. 引子 本例是从 gtest-1.5.0 自带的 sample 中的 sample1 改写而...

晨曦之光
2012/03/09
693
0
如何编译google test的例子?

本博客 http://blog.csdn.net/livelylittlefish 贴出作者(三二一@小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正! How to build samples of Google Test? In the source of google...

晨曦之光
2012/03/09
638
0

没有更多内容

加载失败,请刷新页面

加载更多

Taro 兼容 h5 踩坑指南

最近一周在改造 公羊阅读🐏 Taro 版本适配 h5 端,过程中改改补补,好不酸爽。 本文记录📝遇到的问题,希望为有相同需求的哥们👬节约点时间。 Taro 版本:1.3.9。 client_mobile_taro...

dkvirus
今天
4
0
Spring boot 静态资源访问

0. 两个配置 spring.mvc.static-path-patternspring.resources.static-locations 1. application中需要先行的两个配置项 1.1 spring.mvc.static-path-pattern 这个配置项是告诉springboo......

moon888
今天
3
0
hash slot(虚拟桶)

在分布式集群中,如何保证相同请求落到相同的机器上,并且后面的集群机器可以尽可能的均分请求,并且当扩容或down机的情况下能对原有集群影响最小。 round robin算法:是把数据mod后直接映射...

李朝强
今天
4
0
Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
今天
19
0
java数据类型

基本类型: 整型:Byte,short,int,long 浮点型:float,double 字符型:char 布尔型:boolean 引用类型: 类类型: 接口类型: 数组类型: Byte 1字节 八位 -128 -------- 127 short 2字节...

audience_1
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部