2012-06-28 26 views
10

Estoy escribiendo un pequeño servidor XMPP usando boost :: asio y quiero probar mi código unitario. Preguntas:Pruebas unitarias y boost :: asio

  1. ¿Existen marcos listos para usar para esto? Por lo que yo entiendo, necesito proporcionar objetos simulados para boost :: asio classes/templates y realmente quiero hacer esto (semi) automáticamente.
  2. ¿Es posible probar la simultaneidad (por ejemplo, conexiones múltiples al servidor y al enrutamiento de mensajes entre ellos)?

Respuesta

6

1) Escribí una pequeña clase de socket que se puede usar como reemplazo de boost :: asio :: ip :: tcp :: socket. Si lo desea, puede echar un vistazo a robitzki.de/test_socket.h (test_socket.cpp, test_io_plan.h y test_io_plan.cpp). Dependiendo del constructor utilizado, el socket puede simular la lectura/escritura de fragmentos con diferentes tamaños. Los errores también se pueden simular. Usted es libre de usarlo, si lo desea.

2) Con la sustitución del zócalo, se pueden realizar pruebas de tensión para el software bajo prueba. Esto nunca garantizará que el código no contenga errores, pero es mejor que nada ;-). Personalmente, me gustan las revisiones de código para asegurarme de que el código multiproceso contenga la menor cantidad posible de errores.

HTH

Torsten

+0

Hola, he estado buscando en la unidad de pruebas de impulso :: asio así y encontré su test_socket.h, estoy borrwing si no le importa :) – dutt

+3

@dutt Le invitamos a usarlo. Eche un vistazo a https://github.com/TorstenRobitzki/Sioux/tree/master/source/asio_mocks, donde he tratado de poner esto en una forma más reutilizable. –

+0

Gracias, voy a echar un vistazo :) He hecho algunas modificaciones pequeñas aquí para satisfacer mis necesidades. – dutt