gtest使用入门(5)-类的测试,使用测试参数

一、概述

本篇学习类的测试,并使用测试参数进行测试。

二、准备待测代码

待测源码是一个计算器类,接下来我们对这个类进行测试。

  1. 增加待测源码头文件

在这里插入图片描述

  1. 增加待测源码cpp文件

在这里插入图片描述

  1. 增加测试用例文件如下:

在这里插入图片描述

至此待测源码准备完成。

三、修改Makefile文件

因为我们只在已有的目录增加了原文件,没有创建新的目录和头文件,所以makefile可以不用修改。

四、编译执行

cd 进入googletest-release-1.8.1/googlemock/make/ 目录
执行make命令进行编译和运行测试:

make

./run_test

运行结果:

在这里插入图片描述

可以看到我们的测试用例执行成功。

五、使用测试参数

上面的例子可以看到,在测试加法时,为了后面的加数是不同的值,现在因为使用等价类划分只有 -1, 0, 1三个值,如果是测试别的用例,需要测试几十,上百个值的时候,我们的测试代码会非常多,为了应对这个情况,可以使用谷歌提供的测试参数宏。简单使用方法如下:

  1. 在testsuits目录创建一个fixtures文件夹,用于存放测试参数宏,或者以后的测试固件类。
  2. 创建calculator_fixture.h头文件。头文件的内容如下:
    在这里插入图片描述

可以看到,我们现在设置的值是-1, 0, 1,如果需要测试更多的值,可以直接在这个头文件里面增加,如增加-100,200,1000 :

INSTANTIATE_TEST_CASE_P(
    CalculatorFixtureName,
    CalculatorFixture,
    testing::Values(
        -1,
        0,
        1,
        -100,
        200,
        1000
    )
);
  1. 增加使用测试参数的用例:
    在calculator_ut.cpp文件中增加如下用例:

    TEST_P(CalculatorFixture, FixtureUseDemo)
    {
        int n = GetParam();
        Calculator cal(-1);
        cal.calculate(t_operation::plus, n);
        EXPECT_EQ((-1)+(n), cal.value());
    
        Calculator cal1(0);
        cal1.calculate(t_operation::plus, n);
        EXPECT_EQ((0)+(n), cal1.value());
    
        Calculator cal2(1);
        cal2.calculate(t_operation::plus, n);
        EXPECT_EQ((1)+(n), cal2.value());    
    }
    

在这里插入图片描述

  1. 修改makefile
    因为我们增加了fixtures目录并在该目录添加了calculator_fixture.h头文件,所以我们需要修改makefile,使编译的时候能找到我们的头文件:

在这里插入图片描述

  1. 编译并执行用例
    cd 进入googletest-release-1.8.1/googlemock/make/ 目录
    执行make命令进行编译和运行测试:

    make

    ./run_test

  2. 执行结果

    在这里插入图片描述

  3. 尝试让测试用例失败
    一路过滤我们写的用例都是pass的,我们可以尝试让用例失败,看看如果我们测试到bug,会怎么样。
    这里把使用参数测试的用例中的-1改为-2,这样期望的值肯定就跟预期的不一样了:

    在这里插入图片描述

    重新编译执行,fail的结果就显示出来了:
    在这里插入图片描述

六、总结

这次学习了使用gtest进行了如下测试:
1、对类的默认构造函数进行测试
2、对类的带参数的构造函数进行测试
3、对类的方法进行测试
4、使用测试参数进行测试,简化用例编写

这个例子的源码暂时保存在git上使用如下命令即可下载:

git clone git@github.com:TonsenWei/gtest_samples.git

或访问如下链接下载:
gtest-demo

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值