gtest测试框架

gtest测试框架,搭建参考 :https://www.linuxidc.com/Linux/2015-05/116894.htm

 

1. gtest代码下载: https://codeload.github.com/google/googletest/tar.gz/release-1.8.0

 

2.进入 googletest-1.8.0/googletest/, 删除不需要的文件,完成后:

makefile:

#https://www.linuxidc.com/Linux/2015-05/116894.htm
GTEST_DIR = .
USER_DIR = ./samples

CPPFLAGS += -isystem $(GTEST_DIR)/include
CXXFLAGS += -g -Wall -Wextra -pthread

TESTS = run_test
FILES = $(foreach d, $(USER_DIR), $(wildcard $(d)/*.cpp))
OBJS = $(patsubst %.cpp, %.o, $(FILES))

# All Google Test headers.  Usually you shouldn't change this
# definition.
GTEST_HEADERS = $(GTEST_DIR)/include/gtest/*.h \
                $(GTEST_DIR)/include/gtest/internal/*.h

all : $(TESTS) gtest.a

clean :
	rm -f $(TESTS) gtest.a gtest_main.a *.o $(USER_DIR)/*.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) $@ $^

%.o : %.cpp
	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@



$(TESTS) : $(OBJS) gtest_main.a
	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@

sample目录下只保留sample1*文件,完成后make得到gtest.a和gtest_main.a和testbin。

gtest.a是不带main函数的库,需要自己写用于测试的 main.cpp,gtest_main.a使用src目录下的main函数,自己代码中只需要写个TEST()单元测试文件。

 

3.然后假使我们的代码在~/mycode/目录下,包含abc.c和abc.cpp。那么我们可以写TEST()单元测试文件 test_abc.cpp 测试abc接口,然后在gtest目录下将上面makefile中USER_DIR指定到~/mycode/,即可编译运行测试。

或者我们在~/mycode/目录下, 除了写 TEST() 单元测试文件test_abc.cpp 外,再写一个main.cpp(仿照 src/gtest_main.cpp)负责运行gtest框架,然后make(makefile如下)

MODULE_BIN = main_test

MODULE_OBJS += $(patsubst %.cpp,%.o ,$(wildcard ./*.cpp))
#MODULE_SRCS = $(shell find . -name "*.cpp")
#MODULE_OBJS += $(patsubst %.cpp,%.o ,$(MODULE_SRCS))

CC = g++
OUT_DIR = .
PUBLIC_FLAGS:=-g -O0 -Wall
LDFLAGS = -lm -lz -lpthread
MODULE_INCLUDE = -I.
MODULE_INCLUDE += -I../googletest-release-1.8.0/googletest/include

%.o: %.cpp
	$(CC) $(PUBLIC_FLAGS) $(MODULE_INCLUDE) -c $< -o $@

all : clean $(MODULE_OBJS)
	$(CC) $(MODULE_OBJS) ../googletest-release-1.8.0/googletest/gtest.a $(PUBLIC_FLAGS) $(LDFLAGS) -o $(OUT_DIR)/$(MODULE_BIN)

clean:
	-rm -f $(OUT_DIR)/$(MODULE_BIN)
	-rm -f $(MODULE_OBJS)

 

4.开始测试,./main_test --gtest_list_tests, ./main_test --gtest_filter=xxx.xxx

后续学习可以参考这个 https://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值