c++单元测试框架之gtest

本文深入探讨了单元测试的基本概念及重要性,特别是在C++环境下如何运用gtest框架进行有效测试。文章详细介绍了测试覆盖类型,如语句覆盖、判定覆盖等,并通过具体示例展示了如何编写测试用例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

搞了3个礼拜的单元测试了,把最近所学所用的东西记录一下,顺便为公司接下来要做的单元测试培训做下背书。

首先什么是单元测试。

在面向对象编程中,通常一个类会承担一个单一的职责,所以我们可以用类来划分单元。单元测试,就是针对项目中的各个类进行测试。它侧重于发现单元内部的逻辑错误,属于白盒测试的范畴。

单元测试强调以下几点:

语句覆盖:选择足够的测试数据,使得代码的每个语句都至少被执行一次。

判定覆盖:选择足够的测试数据,使得程序的每个判定条件都至少出现一次真值和一次假值。

条件覆盖:使得每一个判断语句的每个逻辑条件可能的值至少出现一次。

条件组合覆盖:即当一个判定条件由多个条件组合二成时,使得每个条件的各种可能的组合都出现一次。

数据覆盖:即用尽可能多的数据传入接口中进行测试。

单元测试入口。

在c++中,任何程序都需要main函数,gtest同理,下面是单元测试的入口main。

#include <gtest/gtest.h>

int main(int argc,char **argv)
{
    test::InitGoogleTest(&argc,argv);    //初始化gtest
    return RUN_ALL_TESTS();    //运行程序中所有的测试用例
}

测试用例编写。

首先我们得有一个接口:

int sum(int a,int b)
{
    sum = a + b;
    if(sum > 100)
        return 100;

    return sum;
}

测试用例:

TEST(calculate,test_sum)
{
    EXPECT_EQ(8,sum(5,3));
    EXPECT_EQ(100,sum(60,40));
    EXPECT_EQ(100,sum(150,50));
}

EXPECT_EQ(expected,actual),这个断言用来判断actual与expected是否相等。expected是预期值,actual是实际值。

当二者相等时,测试通过。

就是这么简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值