Linux下Google Test (GTest)和Windows下测试环境搭建步骤
Step 1:下载GTEST–gtest-1.7.0.zip
下载链接为:https://code.google.com/p/googletest/downloads/list
Step 2:认识文件夹
下载并解压之后,就可以看到gtest-1.7.0文件夹
打开make文件夹,你会发现里面只有一个Makefile文件。查看Makefile文件内容,得知这是系统给出的编译samples文件夹中的第一个sample的命令
Step 3:改写Makefile文件
新建一文件夹拷贝Makefile文件(mkdir code)并修改为:
CXX = g++
CPPFLAGS = -isystem $(GTEST_DIR)/include
CXXFLAGS = -g -Wall -Wextra -pthread
#LDFLAGS =
#LIBS = -lpthread -lgtest
GTEST_DIR = …
USER_DIR = .
TARGET = main
#GTEST_HEADERS = $(GTEST_DIR)/include/gtest/.h
$(GTEST_DIR)/include/gtest/internal/.h
#INCS = -I ./ -I KaTeX parse error: Expected 'EOF', got '#' at position 18: …TEST_HEADERS) #̲FILES =(foreach d,
(
U
S
E
R
D
I
R
)
,
(USER_DIR),
(USERDIR),(wildcard $(d)/*.cpp))
SRC =
(
w
i
l
d
c
a
r
d
∗
.
c
p
p
)
O
B
J
S
=
(wildcard *.cpp) OBJS =
(wildcard∗.cpp)OBJS=(patsubst %.cpp,%.o,$(SRC))
all: KaTeX parse error: Expected 'EOF', got '#' at position 10: (TARGET) #̲(TARGET): $(OBJS)
$(CXX) $(CXXFLAGS) $^ -o $@
#$(OBJS):%.o:%.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@ $(CPPFLAGS)
clean:
rm -f $(TARGET) *.o
.PHONY:clean
#GTEST_SRCS_ = $(GTEST_DIR)/src/.cc $(GTEST_DIR)/src/.h $(GTEST_HEADERS)
#gtest-all.o : $(GTEST_SRCS_)
$(CXX) ( C P P F L A G S ) − I (CPPFLAGS) -I (CPPFLAGS)−I(GTEST_DIR) $(CXXFLAGS) -c \
$(GTEST_DIR)/src/gtest-all.cc
#gtest_main.o : $(GTEST_SRCS_)
$(CXX) ( C P P F L A G S ) − I (CPPFLAGS) -I (CPPFLAGS)−I(GTEST_DIR) $(CXXFLAGS) -c \
$(GTEST_DIR)/src/gtest_main.cc
#gtest_main.a : gtest-all.o gtest_main.o
$(AR) $(ARFLAGS) $@ $^
%.o :%.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@
$(TARGET) : $(OBJS) gtest_main.a
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
gtest_main.a的生成第一次执行,后续这部分可以不在编译只需保证文件夹下存在即可
make&&./main
Step 5:添加自己的测试函数
总结:环境搭建完成之后,每次测试一个文件xxx.cpp以及它的xxx.h文件,就把这俩放入code文件夹,然后编写xxx_unittest.cpp测试文件,也放进去。然后到这个目录下用命令行 make && ./可执行文件就可以了
Windows下则是进入msvc目录: 打开\gtest\msvc\gtest.sln, 编译即可.编译之后,在msvc里面的Debug或是Release目录里看到编译出来的gtestd.lib或是gtest.lib文件。
第一个Demo
新建一个Console Application。接着就是设置工程属性:
配置VS项目
配置包含目录
项目属性页->配置属性->C/C+±>常规->附加包含项目: 加入gtest\inclue的相对目录
配置依赖项
项目属性页->配置属性->链接器->输入->附加依赖项: 加入gtest\Debug\gtestd.lib相对目录
预处理器
_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING
_CRT_SECURE_NO_WARNINGS
代码生成配置
项目属性页->配置属性->C/C+±>代码生成->运行库: 改成 多线程调试(/MTd)
项目属性页->配置属性->C/C+±>代码生成->启用函数级链接: 改成 是(Gy)
工程设置后了后,我们来编写一个最简单测试案例试试,我们先来写一个被测试函数:
#include <gtest/gtest.h>
int Foo(int a, int b)
{
if (a == 0 || b == 0)
{
throw “don’t do that”;
}
int c = a % b;
if (c == 0)
return b;
return Foo(b, c);
}
TEST(FooTest, HandleNoneZeroInput)
{
EXPECT_EQ(2, Foo(4, 10));
EXPECT_EQ(6, Foo(30, 18));
}
int main(int argc, _TCHAR* argv[])
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
直接运行案例