0
我正在尝试使用gmock进行我的第一次谷歌测试,准备好所有VS环境。简单的使用gtest ASSERT_XX函数就可以工作。但是当试图使用gmock时,我遇到了第一个编译问题。我想也许我的程序有一些问题,但gtest并没有告诉我如何解决它。Google测试:EXPECT_CALL无法在我的测试代码中编译
在下面的程序中,我得到了一个名为“FileIo”的类。它的“读取”函数将执行I/O操作,我希望在保持f()和g()不变的情况下模拟此Read()函数。所以我使用NickMock建立FileIo的模拟对象,然后尝试使用EXPECT_CALL伪装Read()函数。
class FileIo
{
public:
int f(){ return 1; }
int g(int i){ return i*i; }
int Read(){
FILE* pf = fopen("D:\\a.txt", "r+w");
fclose(pf);
return 3;
}
};
class BBTest : public ::testing::Test
{
public:
};
TEST_F(BBTest, testcase_1)
{
NiceMock<FileIo> mio;
EXPECT_CALL(mio, Read()).WillRepeatedly(DoAll(Return(2)));
}
EXPECT_CALL声明失败编译。如何解决它? 谢谢。
看到您收到的实际编译器错误会很有帮助。 – Ian
您需要为FileIo定义一个Mock类。就像你上面所做的那样,你不能把它包装在一个NiceMock中。请参阅https://code.google.com/p/googlemock/wiki/ForDummies#Getting_Started –