使用 gtest & gmock 验证程序调用
Verify program calls with gtest & gmock
我正在使用 google 模拟和 google 测试,我有一个对象,例如:
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() 不是每当 a 失败时( = return 值 <5)
所以我写了类似的东西:
MockFoo mock ;
mock.method(badArg);
EXPECT_CALL(
mock,
a
)
.Times(1) ;
EXPECT_CALL(
mock,
a
)
.Times(0) ;
但是gtest告诉我调用了none个方法,我应该用什么?
感谢您的解释
要正确使用 gmock,您需要先设置您的期望,然后您运行 真正的东西。这样,gmock 就知道会发生什么,并且能够分析真实的东西是否真的满足要求。否则,如果您在设置期望值之前调用该函数,就像在您投球后要求接球手进入待命位置一样。偏离路线的接球手将错过。
在你的情况下,你想要这样的东西:
MockFoo mock ;
// Catchers ready!
EXPECT_CALL(mock, a)
.Times(1) ;
EXPECT_CALL(mock, b)
.Times(0) ;
// Here's the ball!!
mock.method(watermelon);
我正在使用 google 模拟和 google 测试,我有一个对象,例如:
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() 不是每当 a 失败时( = return 值 <5) 所以我写了类似的东西:
MockFoo mock ;
mock.method(badArg);
EXPECT_CALL(
mock,
a
)
.Times(1) ;
EXPECT_CALL(
mock,
a
)
.Times(0) ;
但是gtest告诉我调用了none个方法,我应该用什么?
感谢您的解释
要正确使用 gmock,您需要先设置您的期望,然后您运行 真正的东西。这样,gmock 就知道会发生什么,并且能够分析真实的东西是否真的满足要求。否则,如果您在设置期望值之前调用该函数,就像在您投球后要求接球手进入待命位置一样。偏离路线的接球手将错过。
在你的情况下,你想要这样的东西:
MockFoo mock ;
// Catchers ready!
EXPECT_CALL(mock, a)
.Times(1) ;
EXPECT_CALL(mock, b)
.Times(0) ;
// Here's the ball!!
mock.method(watermelon);