Шаблоны для модульного тестирования метода 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 ], и сейчас я немного застрял. Я не могу использовать googlemock в стандартной библиотеке C (например, socket.h , в данном случае), поскольку это не класс C ++. Я мог бы создать тонкий класс-оболочку 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 (который теперь может нуждаться в переименовать в Сеть или что-то подобное). LibcWrapper может пригодиться и для других классов, и сама по себе не требует модульного тестирования, поскольку предоставляет только набор методов класса.

Мне это начинает казаться хорошо. Я ответил на свой вопрос или существуют ли стандартные шаблоны для тестирования такого рода разработки на C ++?

10
задан Josh Glover 25 April 2011 в 14:54
поделиться