#include "gtest\gtest.h"
using namespace testing;
class MyGTest : public Test
{
public:
void f(){}
void g(){
f();
f();
}
};
TEST_F(MyGTest, first)
{
EXPECT_CALL(*this, f()).Times(2);
g();
}
VC2013说:
"MyGTest_first_Test" has no member "gmock_f"
这是什么意思?我希望调用g()来调用f()2次。我做的任何语法错误?
答案 0 :(得分:3)
不是语法错误,更像是一种完全错误的方法。宏
EXPECT_CALL
用于设置函数调用的期望值
模拟对象。问题是你没有通过模拟
对象EXPECT_CALL
(定义包含的类的对象)
MOCK_METHODN
),您正在取消引用this
指针。在
这样做,您将测试类的对象传递给EXPECT_CALL
。
这就是编译器错误提到类MyGTest_first_Test
的原因,
gmock在后台创建一个新类,其名称是a
夹具类名称(MyGTest
)的组合,测试用例名称
(first
)和基类名称(Test
)。