当 Mock 对象被析构时, googlemock 会对结果进行验证以判断其行为是否与所有设定的预期一致 using testing::Return; // #1,必要的声明 TEST(BarTest, DoesThis) { MockFoo foo; // #2,创建 Mock 对象 ON_CALL(foo, GetSize()) // #3,设定 Mock 对象默认的行为...
创建一个需要进行mock的类或接口的模拟对象。可以使用ON_CALL宏来设置模拟对象的行为。例如: 代码语言:txt 复制 class MyMockClass { public: MOCK_METHOD0(getData, int()); }; MyMockClass mockObj; 设置模拟对象的行为。可以使用EXPECT_CALL宏来设置模拟对象的期望行为。例如: ...
1. mockXXX 类,通常使用继承测试目标类的方法,来方便针对目标类的测试提供部分扩展功能,比如为protected 成员添加get set方法,或者添加某些状态成员,方便测试函数功能过程中修改状态、检测状态。 2. testXXX 类, 继承gtest::test 类。 3. MOCK宏 与 ON_CALL宏 案例如下: mockXXX: public XXX{ ON_CALL(*this,...
ON_CALL和EXCEPT_CALL相当于设置桩函数的属性设置,因此应当在桩函数调用前进行设置。除了TEST宏函数定义和main函数之外,在例子中可以看到我还定义了SubServiceCall,由于这个函数会向Fbase发送服务调用请求,但我们用MockF2Pack打的包其实是空无一物,调用服务显然会使测试过程不可控,因此我们把这个函数也进行打桩。 到这...
ON_CALL(#1, #2(#3)).WillByDefault(Return(#4));ON_CALL(foo,GetSize()) .WillByDefault(Return(1));// ... other default actions ... 其中#1表示mock对象,#2表示个方法名称,#3表示方法的参数,#4表示参数为#1, #2,#3情况下返回结果。
一旦我们定义了模拟对象,我们可以通过gtest mock提供的API来配置它的行为。其中最常用的API之一是EXPECT_CALL,它用于配置模拟对象的方法。EXPECT_CALL接受两个参数,第一个参数是模拟对象的指针,第二个参数是模拟对象的方法调用。例如,我们可以使用以下代码配置之前定义的模拟对象的行为: cpp MockObject mock; EXPECT_CAL...
EXPECT_CALL(mock, processData(nullptr)) .WillOnce(testing::Invoke([](int* data) { EXPECT_EQ(data, nullptr); })); mock.processData(nullptr); } ``` 注意事项 在使用GTest Mock进行指针参数测试时,有一些注意事项需要我们牢记: 1.处理空指针情况:确保你的测试用例能够正确处理空指针的情况,以避免潜在...
使用hook技术的有mockcpp和CppFreeMock,这里使用的是CppFreeMock。因为它是基于gmock而来,是对gmock只能mock虚函数的一个补充,并且在用法上也能完美兼容gmock框架,如果单元测试已经是使用gtest+gmock的组合了,那么使用CppFreeMock的成本将不会高。 举个栗子: ...
TEST(MockTestSuite, MockTestCase)定义了一个测试用例,属于测试套件MockTestSuite。 使用EXPECT_CALL宏设置期望的函数调用。在这里,期望mock.Foo(5)被调用一次,并返回10。 使用ASSERT_EQ宏断言mock.Foo(5)的返回值是否等于10。 CMake配置示例 cmake_minimum_required(VERSION 3.14) ...
Google Mock GoogleMock是个很强大的东西,测试一个模块的时候,可能涉及到和其他模块交互,可以将模块之间的接口mock起来,模拟交互过程。 1. Makefile里面需要加入 -lgmock才能正常连接 AM_LDFLAGS=-lpthread -lc -lm -lrt -lgtest -lgmock 2. 可以手工生成Mock类,也可以使用脚本生成 ...