Je cherche à démarrer avec les objets dans mes tests unitaires. Il semble qu'il existe des tonnes de bons cadres de simulation.
- Les différents cadres ont-ils différents publics cibles?
- Quels facteurs dois-je prendre en compte lors du choix du cadre adapté à ma situation?
Réponses:
Les différents cadres ont-ils différents publics cibles?
Oui. Certains frameworks comme Microsoft Moles , TypeMock Isolator et JustMock , vous permettent de vous moquer de tout. Ces outils de simulation sont généralement meilleurs pour les développeurs qui souhaitent les utiliser sur du code existant, car il peut ne pas être possible de refactoriser une telle version dans une conception plus testable. *
Traditionnellement, les conceptions testables signifie que le code de base doit utiliser libérale des interfaces, classes abstraites, des méthodes virtuelles, des classes non scellées, etc. Par conséquent, les cadres moqueurs traditionnels comme Moq et RhinoMocks travail bien avec le code développé à l' aide Test Driven Development, injection de dépendance, et d'autres concepts de ce type. Soit dit en passant, je recommanderais fortement d'utiliser l'injection de dépendances, car vous gagnez beaucoup plus que du code testable, mais aussi du code plus maintenable.
Quels facteurs dois-je prendre en compte lors du choix du cadre adapté à ma situation?
* Voir Travailler efficacement avec le code hérité , pour savoir comment refaçonner lentement le code sans tests en code qui peut être utilisé avec des outils de test (et de simulation) traditionnels.
la source
Le tutoriel Moq a une section sur le fond, la philosophie et la controverse au début qui en discute en relation avec quelques outils spécifiques: TypeMock Isolator, RhinoMocks et Moq. Il est écrit pour expliquer Moq, il est donc naturellement un peu biaisé, mais je l'ai trouvé très utile pour moi lorsque j'essaie de comprendre certaines des différences dans les cadres de simulation.
J'ai trouvé les réponses à ce fil de discussion SO sur C # Mocking Frameworks également utiles. La plupart se réfèrent simplement à un Mocking Framework que l'utilisateur trouve vraiment utile, mais il y a une réponse de HaraldV un peu plus bas qui discute des simulations basées sur un proxy et des simulations basées sur un profileur.
J'ai également pu trouver un tableau comparatif en ligne. Notez que cela date de 2009, donc je ne suis pas sûr qu'il soit à jour; il y a au moins un commentaire indiquant que les informations sur TypeMock et les rappels sont obsolètes, mais le graphique peut être utile pour soulever des problèmes à prendre en compte même si vous devrez faire des démarches pour voir l'état actuel: RhinoMocks, Moq, NMock, et tableau de comparaison TypeMock
Il existe un projet sur Google Code avec des cas de test dans plusieurs frameworks de simulation pour une comparaison de code facile: mocking-frameworks-compare
la source
Dans mon équipe, nous avons choisi Microsoft Moles . Il gagne de manière significative sur # 2, # 3 et # 4, bien qu'il soit moins idiomatique que la plupart des alternatives et est à l'extrémité inférieure sur # 1.
la source