一直很关注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
点执行后看一下结果!