对于某个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);
}