GTest编译方法:
1. Google test 代码下载
svn下载:svn checkout http://googletest.googlecode.com/svn/trunk/ gtest-svn
例如你把你的代码放在/usr/src/gtest-svn
2. GTest静态库的编译
GTEST_DIR = /usr/src/gtest-svn
g++ -I${GTEST_DIR}/include -I${GTEST_DIR} -c ${GTEST_DIR} /src/ gtest-all.cc
ar -rv libgtest.a gtest-all.o
3. 这样你可以编译自己的程序了
1> 把libgtest.a 放在你自己定义的lib中,如/home/John/myGtest/lib
2>把GTest需要的头文件放在你自己定义的头文件中,如/home/john/myGtest
/include(头文件只需要从源码中拷贝就可以)
$cd /home/john/myGtest
$g++ -I./include your_test.cc –L./lib -lgtest -o your_test
GTest实例运行:
4. 写一个例子实现GTest 测试
首先我们建立自己的测试文件为sample.cpp
int sample(inta,intb)
{
if(a==0||b==0)
{
throw"Don‘t do this";
}
int c= a%b;
if(c==0)
return b;
return sample(b,c);
}
其次写自己测试程序的头文件sample.h
int sample(int a,int b);
写GTest测试程序为gtestSample.cpp
#include<gtest/gtest.h>
#include “sample.h”
TEST(sampleTest,HandleNoneZeroInput)
{
EXPECT_EQ(2, sample(4,10));
EXPECT_EQ(6, sample(30,18));
}
最后写我们相关的Makefile文件
GTEST_DIR = ..
USER_DIR = ../program
CPPFLAGS += -I$(GTEST_DIR)/include
CXXFLAGS += -g -Wall -Wextra
TARGET = sample_unittest
OBJ = sample.o gtestSample.o
# All Google Test headers. Usually you shouldn't change this
# definition.
GTEST_HEADERS = $(GTEST_DIR)/include/gtest/*.h \
$(GTEST_DIR)/include/gtest/internal/*.h
CC = g++
$(TARGET) : $(OBJ)
$(CC) $(CPPFLAGS) $(CXXFLAGS) -L../lib -lgtest -lpthread $^ -o $@
sample.o : $(USER_DIR)/sample.cpp $(USER_DIR)/sample.h $(GTEST_HEADERS)
$(CC) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/sample.cpp
gtestSample.o : $(USER_DIR)/gtestSample.cpp $(USER_DIR)/sample.h $(GTEST_HEADERS)
$(CC) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/gtestSample.cpp
.PHONY: clean
clean:
rm -f $(TARGET) $(OBJ)
执行make
./ sample_unittest
运行结果:
Running main() from gtest_main.cc
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from sampleTest, where TypeParam =
[ RUN ] sampleTest.HandleNoneZeroInput
[ OK ] sampleTest.HandleNoneZeroInput (0 ms)
[----------] 1 test from sampleTest (0 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (0 ms total)
[ PASSED ] 1 test.
Congratulations!You success