我正在写一个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