Dimarts 15 i Dimecres 16 de Novembre
En aquesta sessió, s'ens dona un component que simula una API d'un servidor de correu sortint. Fitxer: MailStub.hxx.
Resumint, un "stub" és un component de mentida que en substitueix un altre que no és convenient d'usar en els tests --per exemple, perquè és lent (imagineu-vos una BDs de veritat, o enviar un mail a cada test!) o perquè volem esperar a implementar un subsistema més endavant.
Analitzeu el MailStub.hxx i fixeu-vos amb
Què fer quan tenim un segmentation fault (violació de segment) ?Primer, mirar amb el debugger gdb dins quina funció ha petat. Noteu que us hem modificat el Makefile perquè conservi els simbols de debug.
gdb ./TotsElsTests executa els tests dins el debugger r fem un "run" fins la petada bt "back-trace" ens escriu la pila de crides a funcions q sortim
Si voleu usar un debuger gràfic per anar navegant pel codi i visualitzant variables, us recomanem el kdbg
A vegades el back-trace només ens dona una pista. Per acabar de caçar el bug podem usar xivatos: std::cout << "hem fet tal cosa\n"; Posarem sempre un xivato dins del mètode de test per indicar-nos a partir d'on llegir-los (sinó ens podem liar molt!).
Aquest mètode de caçar bugs pot semblar molt arcaic, però el desenvolupament basat en tests fa que "sota" cada cas de test tinguem un codi prou simple i el mètode sigui molt útil.
Aquest és el diagrama de classes simplificat del sistema resultant