我正在寫一個C++類來包裝套接字(我知道有這個好的庫 - 我正在滾動自己的練習):單元測試C++方法,使標準庫調用模式
class Socket {
public:
int init(void); // calls socket(2)
// other stuff we don't care about for the sake of this code sample
};
這個類反過來被其他幾個人使用,我知道我可以用googlemock進行子類化和嘲諷的單元測試。
但我想開發這個類test first,目前有點卡住了。我不能在C標準庫(在這種情況下爲socket.h
)上使用googlemock,因爲它不是C++類。 I could圍繞我需要的C標準庫函數創建一個簡單的C++包裝類,現在
class LibcWrapper {
public:
static int socket(int domain, int type, int protocol);
static int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
static int listen(int sockfd, int backlog);
static int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
static ssize_t write(int fd, const void *buf, size_t count);
static int close(int fd);
};
我可以嘲笑那個和單元測試我Socket
類(現在可能需要被重新命名Network
或類似)。 LibcWrapper
也可以用於其他類,因爲它只提供一堆類方法,所以本身不需要進行單元測試。
這對我來說聽起來很好。我是否回答了我自己的問題,或者是否存在標準模式來測試C++中的這種開發?
googlemock [食譜](http://code.google.com/p/googlemock/wiki/CookBook#Mocking_Free_Functions)建議在你情況類似的東西。 – beduin 2011-04-25 15:01:26
@Beduin:讓這個答案,我會投票。 :) – 2011-04-25 15:29:49
@Josh格洛弗:完成)) – beduin 2011-04-25 15:38:58