我正在使用 google mock 和 google test,我有一个对象,例如:
class Foo {
public :
Foo(){}
virtual void method(int arg) {
int var = a(arg) ;
if (var<5){
b() ;
}
}
virtual int a(int arg){
// do stuff
}
virtual int b(){
// do stuff
}
}
我想检查 a() 是否被调用一次,而 b() 是否在每次失败时都被调用(= 返回值 <5) 所以我写了类似的东西:
MockFoo mock ;
mock.method(badArg);
EXPECT_CALL(
mock,
a
)
.Times(1) ;
EXPECT_CALL(
mock,
a
)
.Times(0) ;
但是 gtest 告诉我这些方法都没有被调用,我应该使用什么?
感谢您的解释
最佳答案
要正确使用 gmock,您需要在运行真实的东西之前设置您的期望。这样,gmock 就知道会发生什么,并且能够分析真实的东西是否真的满足要求。否则,如果您在设置期望值之前调用该函数,就像在您投球后要求 catch 手进入待命位置一样。偏离路线的 catch 手将错过。
在你的情况下,你想要这样的东西:
MockFoo mock ;
// Catchers ready!
EXPECT_CALL(mock, a)
.Times(1) ;
EXPECT_CALL(mock, b)
.Times(0) ;
// Here's the ball!!
mock.method(watermelon);
关于c++ - 使用 gtest & gmock 验证程序调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43757937/