Question

J'ai lu de nombreux articles sur les tests unitaires. La plupart des articles ont dit que nous ne devrions pas utiliser plus d'un objet simulé dans un test, mais je ne peux pas comprendre pourquoi. Parfois, nous avons vraiment besoin de plus d'un objet simulé dans un test.

Était-ce utile?

La solution

Vous devez ajouter autant de simulacres que nécessaire pour isoler votre classe en cours de test. Vous avez besoin d'une maquette pour chaque dépendance qui ne devrait pas faire partie du test.

Parfois, vous mettez deux ou trois classes ensemble dans un test, pour simplifier, parce qu'ils construisent quelque chose comme un composant et sont fortement couplés. Tout le reste doit être moqué.

Je sais que cette « meilleure pratique » d'avoir une seule maquette et ne comprends pas. Lors de nos tests unitaires, nous avons beaucoup de simulacres, certains se moque de l'environnement sont mis en place par le framework de test je l'ai écrit (par exemple. TransactionService, SecurityService, SessionService). Il n'y a qu'une seule chose à considérer, comme Gishu a déjà mentionné dans sa réponse, beaucoup se moque sont une indication de forte dépendance. Il est à vous de considérer quand il est trop. Nous avons beaucoup de petites interfaces, ce qui nécessite beaucoup se moque dans les tests.

Pour activer votre réponse autour, vous devriez pas se moquer d'une dépendance lorsque:

  • Il est une partie très couplée de la classe en cours de test, comme une classe interne, classe privée etc.
  • Il est une classe .NET framework commun comme une collection et comme
  • Vous voulez écrire un test d'intégration pour tester exactement l'interaction avec cette classe. (Vous moquer encore tout le reste et vous avez encore des tests unitaires pour chaque classe impliquée dans l'isolement.)
  • Il est juste coûteux de se moquer d'une certaine classe. Faites attention à décider comme trop cher, se moque semblent être difficiles à mettre en place, mais se révèlent être un jeu d'enfant par rapport aux problèmes de maintenabilité que vous aurez à l'aide de classes réelles. Mais il y a des cadres et des technologies qui ne sont pas contre les interfaces et en œuvre sont très difficiles à se moquer. S'il est trop cher pour mettre cette classe cadres derrière votre propre interface, vous devez vivre avec eux dans les tests.

Autres conseils

Vous pouvez avoir plus d'une maquette dans un test unitaire en fonction du contexte.

Cependant, je pense que « les articles » pourrait être faisant allusion à est

  • la prévention de plus-moqueur . Lorsqu'une unité test se moque tous les collaborateurs, vous laissez la porte ouverte; le scénario peut échouer lorsque vous substituez collaborateurs réels. En réduisant le nombre de collaborateurs se moque et en utilisant réels dans la mesure du possible / possible, vous réduisez ce risque.
  • Haut couplage Alertes. Si vous vous trouvez avoir à se moquer de beaucoup de collaborateurs envue d'écrire un test unitaire, il est peut-être une odeur de conception indiquant que vous avez couplage élevé

Je ne suis pas sûr de ce que les articles que vous faites allusion, mais j'ai généralement un objet simulé par la dépendance de la classe en cours de test.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top