GTest源码剖析(一)——概述

本文深入解析了GTest框架的核心概念及使用方法,包括main函数初始化流程、TEST宏、TEST_F宏以及TEST_P宏的具体应用,并提供了详细的代码示例。

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

GTest源码剖析——概述

1 概述

Source: https://github.com/google/googletest
Build:


g++ -isystem ${GTEST_DIR}/include -I${GTEST_DIR} -pthread -c ${GTEST_DIR}/src/gtest-all.cc
ar -rv libgtest.a gtest-all.o

GTest有两个概念:TestCase和Test。实际上,这两个概念分别改名为TestSuite和TestCase更加妥当。

2 GTest使用

2.1 main函数


int main(int argc, char** argv) 
{
  InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
}

2.2 TEST宏的使用


TEST(Call,makeCall)
{
    ASSERT_TRUE(true);
}

2.3 TEST_F宏的使用


class Call : public testing::Test 
{
protected:
  static void SetUpTestCase() 
  {
    CallServer *_callServer = new CallServer;
  }

  static void TearDownTestCase() 
  {
    delete _callServer;
    _callServer = NULL;
  }

  virtual void SetUp()
  {
    CallInfo *_callInfo = new CallInfo;
  }
  virtual void TearDown()
  {
    delete _callInfo;
    _callInfo = NULL;
  }

  static CallServer* _callServer;
  CallInfo* _callInfo;
};

TEST_F(Call,makeCall);

2.4 TEST_P宏的使用


class CallArgs
{
public:
  CallArgs(bool hasAudio,bool hasVideo):
    _hasAudio(hasAudio),_hasVideo(hasVideo){}

  bool audio(){ return _hasAudio;}
  bool video(){ return _hasVideo;}

private:
  bool _hasAudio;
  bool _hasVideo;
};

class Call: public ::testing::TestWithParam<CallArgs>
{
};

INSTANTIATE_TEST_CASE_P(VOIP, Call, ::testing::Values(
    CallArgs(true,true),
    CallArgs(true,false)
    ) );

TEST_P( Call, makeCall)
{
  CallArgs args = GetParam();
  ASSERT_TRUE( makeCall(args.audio(),args.video()) );
}

3 参考

github: googletest


ZhaiPillar
2017-09-16

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值