GTest,一个轻松高效的 C++ 测试框架!

嗨,大家好!我是一行。今天咱们来认识超棒的 GTest,它就像一个智能小助手,能帮我们轻松检查 C++代码有没有问题,让代码质量更靠谱。快来和我一起探索 GTest 的奇妙世界吧!

一、GTest 基础测试用例编写首先呢,我们得学会写简单的测试用例,这就像是给代码出小考题。

#include <gtest/gtest.h>

// 要测试的函数
int add(int a, int b) {
    return a + b;
}

// 测试用例
TEST(AddTest, BasicAddition) {
    int result = add(3, 5);
    // 期望结果是 8
    EXPECT_EQ(result, 8); 
}

这里我们写了个测试 add 函数的用例,调用 add(3, 5) 后,用 EXPECT_EQ 检查结果是不是 8。小贴士:TEST 宏用来定义测试用例,第一个参数是测试套件名,第二个是测试用例名,名字要能清楚描述测试内容哦。

二、多个测试用例与断言我们可以写好多测试用例来全面检查函数。

#include <gtest/gtest.h>

int multiply(int a, int b) {
    return a * b;
}

TEST(MultiplyTest, PositiveNumbers) {
    int result = multiply(2, 4);
    EXPECT_EQ(result, 8); 
}

TEST(MultiplyTest, ZeroMultiplication) {
    int result = multiply(0, 5);
    EXPECT_EQ(result, 0); 
}

这里有两个测试 multiply 函数的用例,分别测试正数相乘和 0 相乘的情况。EXPECT_EQ 就是断言,用来判断实际结果和期望结果是否相等,如果不相等,测试就失败了。

三、测试夹具(Test Fixture)的使用有时候测试的函数可能需要一些初始化操作,这时候就用到测试夹具啦,它就像给测试准备的小舞台。

#include <gtest/gtest.h>

class MyFixture : public ::testing::Test {
protected:
    int num;
    void SetUp() override {
        num = 10;
    }
};

TEST_F(MyFixture, UseFixtureValue) {
    int result = num * 2;
    EXPECT_EQ(result, 20);
}

在这个例子里,MyFixture 类继承自 ::testing::TestSetUp 函数里初始化 num 为 10,TEST_F 宏用来基于这个夹具写测试用例,这样测试用例里就能直接用 num 这个变量了。小贴士:记得在 SetUp 里初始化数据,TearDown 函数可以用来清理数据,不过这里没展示哦。

四、GTest 在实际项目中的应用场景假设我们在开发一个数学库项目,里面有很多数学运算函数。我们可以用 GTest 写大量测试用例来检查这些函数的正确性。比如有计算平方的函数 square,我们可以写测试用例检查不同数的平方计算是否正确;有计算开方的函数 sqrt,也能写测试用例检查边界值、正常值的计算结果。这样在修改代码或者添加新功能的时候,只要运行这些测试用例,就能很快知道有没有引入新的错误。

今天的 C++学习之旅就到这里啦!记得动手敲代码。祝大家学习愉快,C++学习节节高!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值