EXPECT_CALL和ON_CALL是设计用于模拟对象的宏。通常用例如下:
EXPECT_CALL(mockDb, connect("db://localhost")) .Times(1) .WillOnce(Return(false)); // executeQuery 和 disconnect 不应被调用 EXPECT_CALL(mockDb, executeQuery(_)).Times(0); EXPECT_CALL(mockDb, disconnect()).Times(0); // 创建Service实例,并注入MockDatabase Service service(&mockDb); //...
EXPECT_CALL(turtle, Forward(100)).Times(1); // turtle::Forward 将预期调用至少1次 EXPECT_CALL(turtle, Forward(100)).Times(AtLeast(1)); action:满足期望做什么 using ::testing::Return; ... // GetX 第一次调用返回100,第二次调用返回200,第三次返回300 EXPECT_CALL(turtle, GetX()) .Times(...
// 期望turtle.Forward(x)被调用,x为任意值EXPECT_CALL(turtle, Forward);// 期望turtle.GoTo(x, y)被调用,x和y为任意值EXPECT_CALL(turtle, GoTo); 基数:验证调用次数 基数(cardinality)用于验证mock函数的调用次数,由EXPECT_CALL()后面跟着的Times()子句指定,至多使用一次。 直接指定数字表示恰好调用指定的次...
初识Gmock是之前分析GTest源码时,它的源码和GTest源码在同一个代码仓库中(https://github.com/google/googletest)。本文我将以目前最新的Gmock1.7版本为范例,分析其实现原理。(转载请指明出于breaksoftware的csdn博客)
EXPECT_CALL宏表示将会在后面调用foo对象中的DoThis方法,并且调用次数为1。 一切都准备好了,现在直接make编译运行就可以了,运行结果为: 如果我们把最后的delete foo去掉会怎么样? 结果就是gmock会报错提示内存泄露了,但需要注意的是如果在函数func里面里面发生了内存泄露,gmock是检查不出来的。
EXPECT_CALL(mock_helper, helperFunction(::testing::_)) .Times(3) .WillRepeatedly(Return(4)); // 模拟 helperFunction 返回值 // 调用 complexFunction 函数 int result = complexFunction(a, b); // 验证结果 EXPECT_EQ(result, 14); } // 运行所有测试 int main(int argc, char **argv) {<...
4. 一个被Mock的函数,如果没有在EXPECT_CALL中指定expected behavior,系统将会为其指派默认行为(什么都不做,返回0),并且在屏幕上打印WARNING: GMOCK WARNING: Uninteresting mock function call - returning default value. Function call: get_next_row(@0x7fff51a6b888 0x30c51529e0) ...
Describe the bug After I call EXPECT_CALL on a mock object and then call a function that returns -1 from EXPECT_EXIT I get a message about an object that should be deleted but never being: somefile.cpp:198: ERROR: this mock object (used ...
EXPECT_\*系列:如果检测失败发出提示,并继续往下执行 通常情况应该首选使用EXPECT,因为ASSERT在报告完错误后不会进行清理工作,有可能导致内存泄露问题。 gtest有很多类似的宏用来判断数值的关系、判断条件的真假、判断字符串的关系。 条件判断 ASSERT_TRUE(condition); // 判断条件是否为真 ...