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 –