介绍
我在使用Google Mock(v1.7.0)实现纯虚拟接口(interface)时遇到问题。
为了确定根本原因,我将纯虚拟接口(interface)Simple
和MockSimple
组合在一起作为测试。我相信我在这里所做的与this Google Mock example一致。
但是,当我编译它时,我得到一个错误。为什么是这样?我究竟做错了什么?
简单测试代码
#include "gmock/gmock.h"
#include "gtest/gtest.h"
class Simple
{
public:
virtual ~Simple() {}
virtual int Initialize() = 0;
};
class MockSimple : public Simple
{
public:
MOCK_METHOD0(Initialize, int());
};
TEST(Hello, MockSimple)
{
MockSimple m;
EXPECT_CALL(m, Initialize);
m.Initialize();
}
编译命令g++ -I../gmock/include/ -I../gmock/gtest/include -c test.cpp -o test.o
错误输出test.cpp: In member function ‘virtual void Hello_MockSimple_Test::TestBody()’:
test.cpp:20:5: error: ‘m.MockSimple::gmock_Initialize’ does not have class type
最佳答案
需要在EXPECT_CALL中调用的方法的参数列表(在这种情况下为空):
EXPECT_CALL(m, Initialize());
关于c++ - 纯虚拟方法和Google Mock怎么办?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20053955/