À l'aide du Cio pour les Tests Unitaires
Comment un Conteneur IoC être utilisé pour les tests unitaires? Est-il utile pour gérer les objets fantaisie, dans une vaste solution de (50+ projets) à l'aide du Cio? Avez-vous des expériences? C# dans les bibliothèques qui fonctionnent bien pour l'utiliser dans les tests unitaires?
- Seemann serait trop humble pour le point de sortir, mais si vous êtes intéressé à cette question, vous devez au moins être au courant de AutoFixture
- Il y a un bon de parler de la relation entre les DI et les moqueries sur Vimeo par Miguel Castro: vimeo.com/68390510
Vous devez vous connecter pour publier un commentaire.
Généralement parlant, un Conteneur d'injection de dépendances ne devrait pas être nécessaire pour les tests unitaires car l'unité de test est tout au sujet de la séparation des responsabilités.
Envisager une classe qui utilise Constructeur Injection
Dans l'ensemble de votre application, il se peut qu'il y est un immense graphe de dépendance cachée derrière
IMyDependency
, mais dans une unité de test, vous aplatir le tout pour un seul Test De Double.Vous pouvez utiliser la dynamique se moque comme Moq ou RhinoMocks pour générer le Test de la Double, mais il n'est pas nécessaire.
Dans certains cas, une auto-moqueur conteneur peut être agréable d'avoir, mais vous n'avez pas besoin d'utiliser le même DI Conteneur de l'application de production utilise.
Cio va appliquer paradigmes de programmation qui permettra de faire des tests unitaires dans l'isolement (c'est à dire en utilisant des simulacres) de plus simple: utiliser des interfaces, pas de nouvelles(), pas de singletons...
Mais en utilisant le conteneur IoC pour le test n'est pas vraiment une obligation, il sera juste fournir certaines installations d'injection, par exemple des objets fantaisie, mais vous pouvez le faire manuellement.
Je ne suis pas sûr de ce que tu veux dire par la gestion se moque de l'aide du Cio. De toute façon, le Cio, les conteneurs peuvent généralement faire plus que simplement l'injection se moque quand il s'agit de tester. Et si vous avez décent IDE soutien qui fait refactoring possible, pourquoi ne pas l'utiliser?
Oui, sur un vaste solution, vous devez plus que jamais un non sujettes à l'erreur et de refactoring indésirables solution (c'est à dire soit par l'intermédiaire d'un type de coffre-fort conteneur IoC ou la bonne IDE de soutien).
J'utilise souvent un conteneur IoC dans mes tests. Certes, ils ne sont pas des "tests unitaires" à l'état pur. IMO Ils sont plus BDDish et de faciliter le refactoring. Les Tests sont là pour vous donner confiance à refactoriser. Mal écrit, les tests peuvent être comme verser du ciment dans votre code.
De considérer les éléments suivants:
Il y a plusieurs choses qui se produisent lors de l'ajout d'une image à la galerie. Le redimensionnement de l'image, une vignette est généré, et les fichiers sont stockés sur AmazonS3. À l'aide d'un récipient, je peux plus facilement isoler seulement le comportement que je veux tester, qui dans ce cas est la persistance de la partie.
Une auto-moqueur extension du conteneur est très pratique lors de l'utilisation de cette technique:
http://www.agileatwork.com/auto-mocking-unity-container-extension/
À l'aide de conteneurs avec la capacité de résoudre non/anonyme des services comme SimpleInjector, DryIoc (mines) peut retourner se moque de n'avoir pas encore mis en œuvre les interfaces.
Ce qui signifie que vous pouvez commencer à le développement avec le premier simple de la mise en œuvre et de ses moqué de dépendances, et de les remplacer avec de la vraie chose que vous progressez.