2010-03-29 5 views
1

Salutations,tests unitaires avec des objets simulés de sérialisation en C++

Je suis assez nouveau pour TDD et a couru à travers un test unitaire que je ne suis pas tout à fait sûr de savoir comment aborder. Fondamentalement, je suis en train de tester quelques méthodes de classes héritées qui lisent/écrivent un flux binaire dans un fichier. Les fonctions de classe prennent un objet sérialisable en tant que paramètre, qui gère la lecture/écriture réelle dans le fichier. Pour tester cela, je pensais que j'aurais besoin d'un objet maquette de sérialisation que je transmettrais à cette fonction. Ma première pensée était de faire en sorte que l'objet fantaisie reste sur un (char *) qui allouerait dynamiquement de la mémoire et enregistrerait les données. Cependant, il semble que l'objet fictif pourrait faire trop de travail, et pourrait être au-delà de la portée de ce test particulier.

Mon approche initiale est-elle correcte, ou quelqu'un peut-il penser à une autre façon de tester correctement cela?

Merci!

Répondre

1

Je suis sûr qu'il y aura un certain désaccord avec cela, mais je pense que les objets simulés sont un sujet avancé. Je serais à l'aise avec TDD sans maquette avant de plonger dans des simulacres. Cela dit, il y a beaucoup de problèmes qui sont mieux traités avec des simulacres. Dans ce cas, votre maquette n'aurait pas vraiment besoin de faire quoi que ce soit, il suffit d'enregistrer que la fonction appel les avait invoqués. Testez le lecteur et l'auteur réels dans des tests distincts. Votre instinct que votre maquette fait trop de travail est correct.

0

utilisez simplement std :: ostringstream pour ne pas avoir à gérer le char *.

De plus, comme il semble que vous testez le client de l'objet sérialisable, l'objet ne doit pas réellement être sérialisé. Vous devriez vous assurer que les bonnes fonctions sont appelées avec les bons paramètres. Vous pouvez très bien ne pas avoir besoin de char * ou quelque chose comme ça.