Gtest入门介绍(一)

本文介绍了Google Test (Gtest) 的基本用法,包括简单的断言如EXPECT_EQ和更复杂的场景,如使用自定义函数、AssertionResult和字符串比较。同时提到了如何处理缺乏专用断言时的复杂条件判断。

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

Gtest入门介绍

简单使用:
    //test function
    int getdata(int n,int m)
    {
        return  n+m;
    }
    TEST(getdata, demon)
    {
        EXPECT_EQ(1,1);  // 等于
        EXPECT_NE(1,2);  //不等于
        EXPECT_LE(1,2);  // 小于等于
        EXPECT_LT(getdata(1,-1),2);  //小于
        EXPECT_GT(getdata(1,2),1);   //大于
        EXPECT_GE(getdata(1,2),1);   //大于等于

        EXPECT_TRUE(1!=2); //判断true
        EXPECT_FALSE(1==2); //判断true

    }


    int main(int argc, char **argv)
    {

        ::testing::InitGoogleTest(&argc, argv);
        return RUN_ALL_TESTS();
    }
复杂条件判断:
    尽管 googletest 有一组丰富的断言,但它们永远不会是完整的,因为预测用户可能遇到的所有场景是不可能的(也不是一个好主意)。因此,有时用户不得不使用EXPECT_TRUE()检查一个复杂的表达式,因为缺少一个更好的宏。这样做的问题是没有向您显示表达式部分的值,因此很难理解出了什么问题。作为一种解决方法,一些用户选择自己构建失败消息,将其流式传输到EXPECT_TRUE(). 但是,这很尴尬,尤其是当表达式具有副作用或评估成本很高时。

    googletest 为您提供了三种不同的选项来解决此问题:
  • 使用现有的布尔函数

       如果您已经有一个返回的函数或仿函数bool(或可以隐式转换为的类型bool),您可以在谓词断言中使用它来免费打印函数参数
    
      bool Factorial(int n,int m)
      {
          return (n+m)>5;
      }
      TEST(judage,demon1)
      {
          EXPECT_PRED2(Factorial,3,1);
      }
    
  • 使用返回 AssertionResult 的函数

      testing::AssertionResult IsEven(int data )
      {
    
          if ((data % 2) == 0)
              return testing::AssertionSuccess();
          else
              return testing::AssertionFailure() << data << "%2!=0";
      }
    
      int datavalue(int data)
      {
          // do something
          return data*data;
      }
    
      TEST(getdata, demon2)
      {
          EXPECT_TRUE(IsEven(10));
          EXPECT_TRUE(IsEven(datavalue(5)));
      }
    
字符串比较
TEST(getdata, demon2)
{
    cout<<"str compare"<<endl;
    EXPECT_STREQ("1234","1234");            //等于
    EXPECT_STRNE("1234","12345");           //不等于
    EXPECT_STRCASEEQ("qwer","QWER");        //忽略大小写等于
    EXPECT_STRCASENE("qwer","QWERq");       //忽略大小写不等于
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值