Я пишу класс С++ для обертывания сокетов (я знаю, что для этого есть хорошие библиотеки - я катаюсь на практике):
class Socket {
public:
int init(void); // calls socket(2)
// other stuff we don't care about for the sake of this code sample
};
Этот класс, в свою очередь, используется несколькими другими, и я знаю, что unit test с googlemock путем подкласса и издевательств.
Но я хотел бы сначала разработать этот класс тест, и я немного застрял в настоящее время. Я не могу использовать googlemock в стандартной библиотеке C (т.е. socket.h
, в данном случае), так как класс С++ это не так. Я мог бы создать тонкий класс оболочки С++ вокруг стандартных функций библиотеки 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);
};
Теперь я могу издеваться над этим классом и unit test my Socket
(который теперь может быть переименован Network
или некоторые из них). LibcWrapper
может пригодиться и для других классов, и сам по себе не должен быть модульным, поскольку он просто предоставляет кучу методов класса.
Это начинает звучать хорошо для меня. Отвечаю ли я на мой собственный вопрос или существуют стандартные шаблоны для тестирования, управляющего этим видом развития в С++?