949 votes

Ce qui ' la différence entre le trucage, moqueur et déraciner ?

Je sais comment j'utilise ces termes, mais je me demandais si il y a des définitions acceptées de truquer, moqueur, et buter pour les tests unitaires? Comment définissez-vous ces pour vos tests? Décrire des situations où vous pourriez utiliser chaque.

Voici comment j'utilise:

Faux: une classe qui implémente une interface, mais qui contient des données fixes et pas de logique. Retourne simplement "bonne" ou "mauvaise" données en fonction de la mise en œuvre.

Maquette: une classe qui implémente une interface et permet la possibilité de définir de manière dynamique les valeurs de retour/exceptions à deux pas de méthodes particulières et offre la possibilité de vérifier si certaines méthodes ont été appelés/pas appelé.

Stub: Comme une maquette de la classe, sauf qu'il ne prévoit pas la possibilité de vérifier que les méthodes ont été appelés/pas appelé.

Des simulacres et des talons peut être généré ou généré par un moqueur cadre. Faux classes sont générées par la main. J'utilise se moque surtout de vérifier les interactions entre les élèves de ma classe et des classes dépendantes. J'utilise talons une fois que j'ai vérifié les interactions et suis en train de tester d'autres chemins à travers mon code. J'utilise de faux classes principalement à l'abstraction de dépendances de données ou quand on se moque de/talons sont trop fastidieux à configurer à chaque fois.

687voto

Patrick Desjardins Points 51478

Vous pouvez obtenir des renseignements :

De Martin Fowler au sujet de Dérision et de Stub

Faux objets ont implémentations de travail, mais l'habitude de prendre des raccourcis qui les rend aptes à la production

Talons de fournir des conserves de réponses à des appels effectués au cours de l'essai, habituellement, ne répond pas du tout à quoi que ce soit à l'extérieur de ce qui est programmée pour le test. Les talons peuvent également enregistrer des informations concernant les appels d'offres, comme une passerelle de messagerie stub qui se souvient des messages qu'il "envoyé", ou peut-être seulement le nombre de messages qu'il "envoyer".

On se moque de ce que nous parlons ici: les objets pré-programmé avec des attentes, ce qui forme un cahier des charges des appels qu'ils devraient recevoir.

De xunitpattern:

Maquette de l'Objet qui implémente l'interface même comme un objet sur lequel le SUT dépend. On peut utiliser un Objet Fantaisie comme un point d'observation où nous avons besoin de faire le Comportement de Vérification pour éviter d'avoir un non testé Exigence (voir la Production de Bugs sur la page X) causée par une incapacité à observer les effets secondaires de l'appel de méthodes sur la CUS.

Stub : Cette application est configuré pour répondre à des appels de la CUS avec les valeurs (ou exceptions) qui exercera la fonction de Code non testé (voir la Production de Bugs sur la page X) au sein de la CUS. Une indication clé pour l'utilisation d'un Test de Stub est d'avoir le Code non testé causé par l'incapacité de contrôler les apports indirects de la CUS

Faux: Nous acquérir ou de construire une très légère mise en œuvre de la même fonctionnalité fournie par un composant qui le SUT dépend et d'instruire le SUT d'utiliser à la place du réel.

Personnellement

J'essaie de simplifier la vie en utilisant : Maquette et le Talon. J'utilise se Moquer quand c'est un objet que la valeur de retour que j'ai est l'ensemble de la classe testée. J'utilise Talon pour imiter une Interface ou une classe Abstraite pour être testé. En fait, il n'a pas vraiment d'importance la façon dont vous l'appelez, ils sont tous de classe qui ne sont pas utilisés dans la production, utilisée comme classe utilitaire pour les tests.

300voto

Mike Points 1103

Stub - un objet qui fournit des réponses prédéfinies pour les appels de méthode.

Mock - un objet sur lequel vous définissez des attentes.

Faux - un objet avec des capacités limitées (aux fins de tests), par exemple un faux service web.

Tester le Double est le terme général de talons, se moque et truquées. Mais officieusement, vous allez souvent entendre gens qualifient tout simplement simulacres.

6voto

Steve Freeman Points 2055

C’est une question de faire les tests expressive. J’ai mis des attentes sur une maquette si je veux le test pour décrire une relation entre deux objets. J’ai talon des valeurs de retour si je vais mettre en place un objet support pour m’amener au comportement intéressant lors de l’essai.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X