gtest在linux下编译测试用例

来源:互联网 发布:ti84模拟器 mac 编辑:程序博客网 时间:2024/06/06 01:44

研究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.