0
我想爲傳統C api創建模擬對象。它的有效途徑是什麼?我也讀過一些地方,創建存根類可以幫助我,但在這裏我也不確定推薦的方法是什麼。 可以先創建Stub類,然後在其上創建模擬類嗎?請分享您的意見。在遺留C代碼上爲Google測試套件設置模擬對象?
-Bhupesh
我想爲傳統C api創建模擬對象。它的有效途徑是什麼?我也讀過一些地方,創建存根類可以幫助我,但在這裏我也不確定推薦的方法是什麼。 可以先創建Stub類,然後在其上創建模擬類嗎?請分享您的意見。在遺留C代碼上爲Google測試套件設置模擬對象?
-Bhupesh
谷歌模擬調用C風格的功能"free functions."他們可以先創建一個接口,它在C只是一個抽象類++被嘲笑。
他們給出的例子:
class FileInterface {
public:
...
virtual bool Open(const char* path, const char* mode) = 0;
};
class File : public FileInterface {
public:
...
virtual bool Open(const char* path, const char* mode) {
return OpenFile(path, mode);
}
};
而不是直接調用Open(...)
,使用FileInterface
的實例,可以嘲笑在測試中使用。
嘲笑可以像存根使用;只是不要設置對象的任何期望...只使用ON_CALL
方法。
是的,但是我怎樣才能做到這一點在C功能超過700線長..它不只是做一件事...它幾乎所有... 我有點害怕... –
我很困惑你的意思。如果您可以提供更多詳細信息,請更新您的問題。函數的長度不影響其被模擬的能力。 –