2012-06-28 17 views
10

Sto scrivendo un piccolo server XMPP usando boost :: asio e voglio testare il mio codice unitario. domande:Unit-testing and boost :: asio

  1. Esistono alcuni framework pronti all'uso per questo? Per quanto ho capito, ho bisogno di fornire oggetti mock per boost :: asio classes/templates e voglio davvero renderlo (semi) automaticamente.
  2. È possibile testare la concorrenza (ad esempio, più connessioni al server e il routing dei messaggi tra di esse)?

risposta

6

1) Ho scritto una piccola classe di socket che può essere utilizzata come sostituto di boost :: asio :: ip :: tcp :: socket. Se vuoi, puoi dare un'occhiata a robitzki.de/test_socket.h (test_socket.cpp, test_io_plan.h e test_io_plan.cpp). A seconda del costruttore utilizzato, il socket può simulare la lettura/scrittura di blocchi di dimensioni diverse. Gli errori possono essere simulati anche. Sei libero di usarlo, se vuoi.

2) Con la sostituzione della presa è possibile eseguire prove di stress per il software in prova. Questo non garantirà mai che il codice non contenga bug ma è meglio di niente ;-). Personalmente mi piacciono le recensioni del codice per assicurarmi che il codice multithreaded contenga il minor numero possibile di bug.

HTH

Torsten

+0

Ciao, ho cercato in unità di test boost :: asio come bene e trovato il vostro test_socket.h, sto borrwing se non ti dispiace :) – dutt

+3

@dutt Siete invitati a usarlo. Dai un'occhiata a https://github.com/TorstenRobitzki/Sioux/tree/master/source/asio_mocks, dove ho provato a metterlo in una forma più riutilizzabile. –

+0

Grazie, darò un'occhiata :) Ho apportato alcune lievi modifiche qui per soddisfare le mie esigenze. – dutt