Unit-testing и boost:: asio

Я пишу небольшой сервер XMPP, используя boost:: asio, и я хочу, чтобы unit тест моего кода. Вопросы:

  • Есть ли готовые к использованию рамки для этого? Насколько я понимаю, мне нужно предоставить mock-объекты для boost:: asio classes/templates, и я действительно хочу сделать это (полу) автоматически.
  • Возможно ли протестировать concurrency (например, несколько соединений с сервером и маршрутизацию сообщений между ними)?

Ответ 1

1) Я написал небольшой класс сокетов, который можно использовать в качестве замены boost:: asio:: ip:: tcp:: socket. Если вам нравится, вы можете посмотреть на robitzki.de/test_socket.h(test_socket.cpp, test_io_plan.h и test_io_plan.cpp). В зависимости от используемого конструктора сокет может имитировать чтение/запись фрагментов разных размеров. Ошибки могут также моделироваться. Вы можете использовать его, если хотите.

2) С заменой разъема можно выполнить стресс-тесты для тестируемого программного обеспечения. Это никогда не гарантирует, что код не содержит ошибок, но лучше, чем ничего;-). Лично мне нравятся обзоры кода, чтобы убедиться, что многопоточный код содержит как можно меньше ошибок.

НТН

Торстен