GMOCK 学习笔记一

本文介绍了如何使用GMOCK为XXXInterface接口创建Mock类MockXXX,并详细解析了Mock对象的内部结构。在测试用例中,通过EXPECT_CALL设置期望调用并执行测试。每个TEST会产生一个相应的测试类,该类继承自testing::Test,用于执行具体的测试逻辑。
 

对于某个XXXInterface接口(或是XXXclass类),建立MockXXX类。

Eg:
class XXXInterface{

public:
       DoThis(){printf(“Do This of XXXInterface\n”)};

};

通过定义类MockXXX后:

class MockXXX : public XXXInterface {

 public:

  MockXXX() {}

 

  MOCK_METHOD0(DoThis, void());

};

会生成相应的类结构

class MockXXX : public XXXInterface {

 public:

  MockXXX() {}

  //调用FunctionMocker.invoke

  void DoThis(){…}

  //返回FunctionMocker. MockSpec。它描述了该mock函数具有的一些信息。

 void gmock_DoThis(){…}

//拥有一个FunctionMocker对象,它有一个MockSpec成员

mutable ::testing::FunctionMocker<void()> gmock0_DoThis_53;

};

对于每个TEST

TEST(Testsuitname, testname) {

  MockXXX *  foo = new MockFXXX;

 

  EXPECT_CALL(*foo, DoThis());

  foo->DoThis();

  exit(0);

}

都会生成相应的类Testsuitname_testname,它继承了

class Testsuitname_testname : public ::testing::Test {

public: Testsuitname_testname () {}

private: virtual void TestBody();

 static ::testing::TestInfo* const test_info_;

 Testsuitname_testname (Testsuitname_testname const &);

 void operator=( Testsuitname_testname const &);

 };

::testing::TestInfo* const Testsuitname_testname ::test_info_ = ::testing::internal::MakeAndRegisterTestInfo( "Testsuitname", " testname ", "", "", (::testing::internal::GetTestTypeId()), ::testing::Test::SetUpTestCase, ::testing::Test::TearDownTestCase, new ::testing::internal::TestFactoryImpl< Testsuitname_testname >);

void Testsuitname_testname::TestBody() {

  MocXXX* foo = new MockXXX;

 ((*foo).gmock_DoThis()).InternalExpectedAt("..\\..\\..\\..\\..\\..\\..\\gmock-1.5.0\\test\\gmock_leak_test_.cc", 62, "*foo", "DoThis()");

  foo->DoThis();

  exit(0);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值