Je regarde actuellement des bibliothèques de test de l'unité en C ++ et avez quelques questions: p>
Il semble n'y avoir aucune installation moqueuse à Boost.Test mais je ne peux guère penser à faire des tests d'unité sans créer des objets / fonctions simulées. Comment feriez-vous cela à Boost.test, le faisiez-vous manuellement (comment? Je veux dire, il y a plusieurs façons que je puisse penser, rien de tout cela ne semble bien) ou faites-vous simplement en train de faire sans objets masculins? P> < / li>
Googletest et GoogleMemock ressemble à de belles bibliothèques avec moquent cependant, cela nécessite chaque objet qui doit être moqué d'être virtuel. Je n'aime pas vraiment ça, ce n'est pas que je ne me soucie pas de la performance (je pourrais définir une macro pour la sortir du code de production de toute façon) mais je trouve cette très intrusive. Je me demande s'il y a une autre solution qui n'exige pas tant de changement au code existant? (Love Clojure là-bas) P> li> ol>
3 Réponses :
Comment voudriez-vous que quelque chose soit moqueur? C'est comme ça que cela fonctionne dans tous les autres langages de programmation! (D'accord, pas avec le taper du canard, mais cela porte plus de frais généraux que les méthodes virtuelles) si vous êtes préoccupé par la performance: P>
En toute gravité, je ne pense pas que les appels virtuels vont faire de vastes différences de performance. Le seul cas où les virtuelles sont mauvais sont des mauvaises apparences à l'intérieur des boucles intérieures (telles que dans la bibliothèque edit: strong> J'ai manqué le mot très important pas em> dans la question ci-dessus # 2 - que vous êtes iostream code> où ils sont appelés éventuellement pour chaque caractère d'entrée ou de sortie), et même alors seulement en code sensible à la performance. P> li>
ol>
>> Comment voudriez-vous que quelque chose soit moqueur? C'est comme ça que cela fonctionne dans tous les autres langages de programmation! En clojure, par exemple, vous pouvez reculer de manière dynamique et temporairement une fonction à une autre fonction à l'aide du formulaire de liaison (liaison [FOO Mock-FOO] ...)
@DAVINCI: Vous pouvez faire la même chose dans les terres C / C ++ à l'aide d'une macro ou d'une couture de liaison, bien que cela soit beaucoup plus difficile bien sûr.
Je pourrais comprendre si l'OP avait des contraintes de performance que quelque chose pourrait ne pas être réalisable dans ces contraintes, mais je ne comprends pas comment pas i> soin de la performance pourrait éventuellement dire que l'OP est "efficacement vissé".
Tortue a été conçu explicitement pour une utilisation avec Boost.Test et a l'air très gentil avec moi. P>
Disclaimer Je travaille à Typemock.
Typemock Isolator ++ peut se moquer de quoi que ce soit !! Vous n'avez pas besoin de virtuel - tout est moqueur p>
voir Explication ici P>
Pour que vous puissiez simuler des faux publics, privés, abstraits (sans créer réellement une classe de béton), des arguments non virtuels, des arguments, une instance en direct, etc.
Et...
Il façonne tout de manière récursive p> Nous utiliserons le code suivant p>
Le lien vers Typemock.com/... est cassé. Et après avoir navigué au travail introduction page , j'ai trouvé un autre Lien brisé ( Typemock.com/isolatorpp ) et une erreur de terminologie ( localTime Méthode B> I>). J'espère que le produit fonctionne mieux que ce qu'il est présenté ...
Écrivez vos simulacres à la main. Vous découvrirez ce que vous pouvez et que vous ne pouvez pas faire dans la langue.