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



Logo

更多推荐