googletest在linux下建立测试框架

一直很关注googletest也在VS下完成了很简单的建立Testing Framework的测试框架。同时也把所有的实例用了一遍。但对在linux下的g++环境下建立Testing Framework我在WIKI上没有找到,在网上也找了,发现都是解包编译后对自己实例按着加载环境等,完成的编译。但我觉得这个过程一次行,多次下来太累了。

还在在googletest WIKI上发现介绍在目录下有一个makefile的目录,里面有一个Makefile。当我执行makefile后编译出实例中的sample1例子。执行sample1_unittest就是我们看到的测试结果。 现在发现其实googletest已经给我们了一个Testing Framework的测试框架。只要把Makefile对应的位置修改后就可为自己所用。在linux下使用也很容易。

现将发现过程记录一下:

1.

得到版本http://code.google.com/p/googletest/downloads/list 下了一个

gtest-1.5.0.tar.bz2 版本。

通过tar -xjvf gtest-1.5.0.tar.bz2 解包得到gtest-1.5.0目录

2.

设置环境变量在本用户目录下的的ENV环境文件.bash_profile里加入

vi ~/.bash_profile   

   

#google test
export GTEST_DIR=/oracle/gooogletest/gtest-1.5.0
export PATH=$PATH:$GTEST_DIR/include

 

注:修改保存后在执行一下环境, . ~/.bash_profile   

3.

进入$GTEST_DIR/makefile

执行makefile后。

编译生成在$GTEST_DIR/sample/sample1实例 执行sample1_unittest就可以看到测试的结果了。

这个过程得到的是目录下的Makefile。我们以后每次使用的测试框架

4.

在$GTEST_DIR的同等目录下建立自己的测试例子,并使用Makefile完成编译。

5.

使用一个例子,例子在网上随便找的。

 


^_^[oracle@localhost:~/gooogletest/gtSample/ddvip_gtest]$vi ddvip_gtest.cc

 

#include "ddvip_gtest.h"
int f( int a ){
        return a+1;
}
int b( int b ){
        return b+2;
}

 

 

 

^_^[oracle@localhost:~/gooogletest/gtSample/ddvip_gtest]$vi ddvip_gtest.h

#ifndef CODE_H
#define CODE_H
        int f( int a );
        int b( int b );
#endif

 


^_^[oracle@localhost:~/gooogletest/gtSample/ddvip_gtest]$vi ddvip_gtest_unittest.cc

 

#include <limits.h>
#include "ddvip_gtest.h"
//#include <../../gtest-1.5.0/include/gtest/gtest.h>
#include <gtest/gtest.h>
TEST( TEST_A,NAME ){//TEST_A 是测试用例名称, NAME 是测试名称
        EXPECT_EQ( 2,f( 1 ) );//这个测试执行函数f,参数为1,查看返回值是不是2
        EXPECT_EQ( 3,f( 2 ) );
}
TEST( TEST_B,NAME ){
        EXPECT_EQ( 10,b( 2 ) );
}


 


6.

将$GTEST_DIR/makefile目录下的Makefile复制到此目录后,进行使用修改

 


 

# A sample Makefile for building Google Test and using it in user
USER_DIR = ./

CPPFLAGS += -I$(GTEST_DIR)/include

CXXFLAGS += -g -Wall -Wextra

TESTS = ddvip_gtest_unittest

GTEST_HEADERS = $(GTEST_DIR)/include/gtest/*.h /
                $(GTEST_DIR)/include/gtest/internal/*.h

all : $(TESTS)

clean :
        rm -f $(TESTS) gtest.a gtest_main.a *.o
GTEST_SRCS_ = $(GTEST_DIR)/src/*.cc $(GTEST_DIR)/src/*.h $(GTEST_HEADERS)
gtest-all.o : $(GTEST_SRCS_)
        $(CXX) $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c /
            $(GTEST_DIR)/src/gtest-all.cc

gtest_main.o : $(GTEST_SRCS_)
        $(CXX) $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c /
            $(GTEST_DIR)/src/gtest_main.cc

gtest.a : gtest-all.o
        $(AR) $(ARFLAGS) $@ $^

gtest_main.a : gtest-all.o gtest_main.o
        $(AR) $(ARFLAGS) $@ $^

ddvip_gtest.o : $(USER_DIR)/ddvip_gtest.cc $(USER_DIR)/ddvip_gtest.h $(GTEST_HEADERS)
        $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ddvip_gtest.cc

ddvip_gtest_unittest.o : $(USER_DIR)/ddvip_gtest_unittest.cc /
                     $(USER_DIR)/ddvip_gtest.h $(GTEST_HEADERS)
        $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/ddvip_gtest_unittest.cc

ddvip_gtest_unittest : ddvip_gtest.o ddvip_gtest_unittest.o gtest_main.a
        $(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
                                                                           

 


 

看起来很复杂但只要在我们做的2项的环境没搞错,就只要把红色的位置修改一下就可以。ddvip_gtest的位置其实之前是sample1只要修改了就成了。使用很简单吧。

这样就生成了ddvip_gtest_unittest

点执行后看一下结果!

 

 

 

 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值