研究gtest有一段时间了 主要是参照coderZH的《玩转Google开源C++单元测试框架Google Test系列》 来进行学习,但他的编译环境是基于windows的,所以有些地方还是很不一样。因此特意将自己的编译过程记录一下.
首先,将如下代码写入到命名为Footest.cc的文件中:
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);
}
这里所定义的是被测函数Foo
下面是被命名为Footest_unittest.cc的测试案例:
#include <gtest/gtest.h>
#include "Footest.cc"
TEST(FooTest, HandleNoneZeroInput)
{
EXPECT_EQ(2, Foo(4, 10));
EXPECT_EQ(6, Foo(30, 18));
}
接下来就是与coderZH不同的地方了,linux下gtest用例的编译:
第一步:
libtool --mode=compile gcc -g -O -c Footest.cc
第二步:
libtool --mode=compile gcc -I ../include/ -g -O -c Footest_unittest.cc
第三步:
libtool --mode=link gcc -g -O -o Footest Footest_unittest.o ../lib/libgtest_main.la -lm
这里所有的步骤都是在gtest-1.6.0/samples目录下执行的。
编译成功生成Footest程序,执行结果如下:
rony-nb@rony-nb:~/codes/gtest-1.6.0/samples$ ./Footest
Running main() from gtest_main.cc
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from FooTest
[ RUN ] FooTest.HandleNoneZeroInput
[ OK ] FooTest.HandleNoneZeroInput (0 ms)
[----------] 1 test from FooTest (0 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (0 ms total)
[ PASSED ] 1 test.