Récemment il y a eu assez peu de battage médiatique autour de tous les différents moqueur cadres de dans le .Monde NET. Je n'ai pas encore tout à fait saisi ce qui est si grande sur eux. Il ne semble pas être trop dur d'écrire les moqueries objets, j'ai besoin moi-même. Surtout avec l'aide de Visual Studio, j'ai rapidement peut écrire une classe qui implémente l'interface que je veux pour se moquer de (l'auto-génère à peu près tout pour moi) et puis les écrire une implémentation de la méthode(s) j'ai besoin pour mon test. Fait! Pourquoi passer par les tracas de la compréhension d'un moqueur cadre dans le seul but de sauver un peu de lignes de code. Ou est un moqueur cadre non seulement à propos de l'enregistrement de lignes de code?
Réponses
Trop de publicités?Une fois, j'ai enfin eu le coup de se moquer des objets, j'ai réalisé qu'ils sont essentiels pour les tests unitaires pour la même raison que le double test à l'aveugle ou à des groupes de contrôle sont essentiels pour les essais scientifiques: ils isolent ce que vous avez fait les tests.
Si vous testez une classe qui a un peu d'interaction via d'autres interfaces, vous économisez non seulement les lignes de code sur avoir à se moquer de chaque interface, mais vous obtenez également la capacité de faire des choses comme "lever une exception si inattendu de la méthode est appelée" ou "exception si ces méthodes sont appelés à sortir de l'ordre". Vous pouvez obtenir remarquablement sophistiqué avec de faux cadres, et bien que je vais rapidement admettre qu'il y a une grande courbe d'apprentissage, lorsque vous vous levez à la vitesse qu'ils vont vous aider à faire vos tests unitaires plus approfondie, sans être pléthorique.
Vous avez effectivement identifié l'un des points clés d'une maquette dans le cadre de votre question. Le fait que vous le code se moque de vous-même n'est pas quelque chose que le développeur doit être inquiète. Le moqueur des cadres de vous donner des implémentations d'interfaces par programmation, en plus ils sont fonctionnels (en fonction de votre installation de la maquette).
Que faites-vous si vous testez un ICustomerDAO, par exemple, et que vous voulez tester une méthode de 14 fois avec des résultats différents? Mettre en œuvre des 14 classes différentes manuellement? Je doute que quiconque aurait envie de le faire.
On se moque de vous donner le pouvoir de définir ce qui va se produire avec les pièces de vos classes lorsque vous n'êtes pas préoccupé de savoir si ou non ils seront en fait de travail, comme lancer des exceptions à chaque fois que vous le voulez, de retour à zéro des résultats et de s'assurer que vous les gérer correctement, etc...
Ils sont d'une grande unité de l'outil de test.
Questions qui pourraient vous aider:
Qu'est ce qu'un simulacre et quand devriez-vous utiliser?
Mockist vs classique TDD
Je trouve que l'utilisation d'un moqueur cadre qui me permet de générer des tests beaucoup plus vite et avec une meilleure vérification de ce que j'attends d'arriver dans le test est happengin. Dans le passé j'ai mis en œuvre des talons ou des faux moi-même. J'ai trouvé que j'avais besoin de générer les stubs spécifiques pour le test que je voulais et cela a pris beaucoup de temps. Je peux créer le même test beaucoup plus rapidement en utilisant un moqueur cadre. Les bons de favoriser la production de faux, des talons ou des simulacres simple syntaxe.
Il faut un certain temps pour obtenir le coup de lui, je l'ai évité un certain temps, mais maintenant n'essayez pas de travailler sans se moquant de cadre pour les raisons @Chamelaeon unis.
Roy Osherove a eu un sondage sur les simulacres et, dans la section commentaires, il y a une discussion (bien que brève) sur la question de savoir s'il faut ou non un simulacre.
Personnellement, j’ai fait manuellement ce que vous avez dit et cela a assez bien fonctionné, mais c’est surtout par habitude et non par une opinion très serrée sur les faux cadres en général.
Et bien je ne pense pas que vous avez BESOIN d'un moqueur cadre. C'est un cadre comme les autres, et au final c'est conçu pour vous faire économiser du temps et de l'effort. Vous pouvez aussi faire des choses comme rouler vos propres commun des structures de données comme les piles et les files d'attente, mais n'est-il pas généralement plus facile d'utiliser ceux qui sont intégrés dans la classe des bibliothèques fournies avec le compilateur/IDE de la langue de votre choix?
Je suis sûr qu'il ya d'autres raisons convaincantes pour utiliser les moqueries des cadres, bien que j'avais laisser le TDD, tests unitaires et de gourous de répondre.