c++单元测试框架之gtest

搞了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是实际值。

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

就是这么简单。

发布了133 篇原创文章 · 获赞 175 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/c_shell_python/article/details/102817639