单元测试利器之google test

一、概述
        gtest是Google开源的一款跨平台的C++单元测试框架,支持自动发现测试、断言集、用户定义的断言、death测试、致命与非致命的失败、类型参数化测试、各类运行测试的选项和XML的测试报告,更多信息请参看 官网 ,也可以参看 这里

二、安装
        点击 这里 下载gtest,当前最新的稳定版本是gtest-1.7.0,如下来安装gtest:
        #unzip gtest-1.7.0.zip
        #cd gtest-1.7.0
        #./configure
        #make
        确认lib/.libs目录下生成了libgtest.a和libgtest_main.a,这是测试程序需要链接的两个库。

三、测试
        下面将举例说明如何应用gtest来做单元测试。
1、被测试程序
        编写被测试程序,在foo.h中编写函数max,求两个数中的大数:
        #ifndef __FOO_H__
        #define __FOO_H__
        int max(int a, int b)
        {
            return a>b?a:b;
        }
        #endif
2、测试程序
        编写测试程序test_foo.cpp来对foo.h进行测试:
        #include "gtest/gtest.h"
        #include "foo.h"
        TEST(foo, max)
        {
            EXPECT_EQ(2, max(2, 1));
            EXPECT_EQ(3, max(2, 3));
        }
        int main(int argc, char **argv)
        {
            ::testing::InitGoogleTest(&argc, argv);
            return RUN_ALL_TESTS();
        }
3、编译测试
        #g++ -g test_foo_cpp -o test_foo \
        #-I../gtest-1.7.0/include \
        #../gtest-1.7.0/lib/.libs/libgtest.a \
        #../gtest-1.7.0/lib/.libs/libgtest_main.a \
        #-lpthread
        编译链接生成可执行文件test_foo,执行结果如下:
        
4、测试说明
        (1)用TEST宏编写测试用例
        gtest提供了TEST宏来编写测试用例,这个宏有两个参数, 这两个参数只是起到提示作用,可以根据需要如下理解或使用:
                (A)
第一个参数表示测试用例名称,第二个参数表示测试名称;
                (B)第一个参数表示类名,第二个参数表示方法名;
                (C)第一个参数表示文件名,第二个参数表示函数名。        
        比如前面test_foo.cpp中的TEST(foo, max)就是采用的(C)这种方式。
        (2)用EXPECT_*/ASSERT_*宏设置检查点
        gtest提供了一系列EXPECT_*和ASSERT_*宏在测试用例中设置检查点进行检查,EXPECT系列和ASSERT系列宏的区别在于:
                (A)EXPECT_*失败时,用例继续往下执行。
                (B)ASSERT_*失败时,直接在当前函数中返回,当前函数中ASSERT_*后面的语句将不会执行。
        比如前面TEST(foo, max)函数中的语句EXPECT_EQ(2, max(2, 1))用于测试max(2, 1)的执行结果是否等于2,如果不相等,则用例执行失败,否则成功。
        (3)初始化环境变量设置用例
        gtest测试用例允许接收一系列命令行参数以进行一些初始化操作,通常在main函数中调用::testing::InitGoogleTest(&argc, argv)来初始化一些环境变量。
        (4)运行测试用例
        一切准备妥当后,接着就运行所有测试用例以完成单元测试。 gtest提供了RUN_ALL_TEST()宏用于调用所有TEST宏编写的测试用例 以达到我们的终极目标。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值