La méthode `reset () 'de Mockito est une fonctionnalité qui vous permet de réinitialiser un objet simulé afin qu'il puisse être réutilisé. Cependant, son utilisation est généralement découragée par les développeurs et les utilisateurs de Mockito, car il peut indiquer des tests ou un code mal conçus qui sont trop complexes et difficiles à tester proprement [7] [9]. Au lieu de cela, l'approche recommandée consiste à créer de nouvelles simulations pour chaque méthode de test pour garantir l'indépendance et la clarté des tests [7] [9].
Comparaison avec d'autres bibliothèques moqueuses
1. JMOCK2: Contrairement à Mockito, JMock2 utilise un contexte pour gérer les attentes et les informations simulées, qui sont reconstruites pour chaque méthode de test. Cela signifie que JMock2 ne nécessite pas de réinitialisation explicite comme le fait Mockito [10]. L'approche de JMock2 aide à maintenir l'isolement des tests sans avoir besoin de réinitialiser manuellement les simulations.
2. EASYMOCK: EasyMOCK ne nécessite pas non plus de méthode de réinitialisation. Il est conçu pour créer de nouveaux objets simulés pour chaque test, similaires à la pratique recommandée avec Mockito. Szczepan Faber, un développeur Mockito, mentionne qu'il n'a jamais eu besoin d'une fonction de réinitialisation lors de l'utilisation d'EasyMOCM [8].
3. Mockito vs autres bibliothèques: En général, d'autres bibliothèques moqueuses comme JMock2 et EasyMOCK favorisent une approche de test plus propre en gérant automatiquement l'état simulé ou en encourageant la création de nouveaux simulations pour chaque test. La méthode `réset () 'de Mockito est plus une exception plutôt que la norme dans les cadres moqueurs.
meilleures pratiques
- Évitez d'utiliser `reset () ': sauf si vous avez absolument nécessaire, par exemple lorsqu'une simulation est injectée par un conteneur et ne peut pas être recréée pour chaque test, il est conseillé d'éviter d'utiliser` reset ()'. Au lieu de cela, concentrez-vous sur la création de tests simples et ciblés avec de nouvelles simulations pour chaque scénario [7] [9].
- Utilisez `ClearInvocations ()`: Si vous devez effacer les interactions sans réinitialiser le coup, utilisez `ClearInvocations () '. Cette méthode vous permet de préserver le coup lors de l'effacement de toutes les interactions enregistrées, qui peuvent être utiles dans certains scénarios [5].
- Code de refactor pour la testabilité: si vous avez besoin d'utiliser `réinitialisation ()` `fréquemment, cela peut indiquer que votre code pourrait bénéficier de la refactorisation pour le rendre plus testable. Cela pourrait impliquer de décomposer des méthodes complexes ou d'améliorer l'injection de dépendance [9].
En résumé, alors que Mockito fournit une méthode `` reset () ', son utilisation est généralement découragée en faveur de la création de nouvelles simulations pour chaque test. D'autres bibliothèques moqueuses promeuvent souvent des pratiques similaires, mettant l'accent sur les tests propres et indépendants sur une gestion complexe de simulation.
Citations:[1] https://www.tutorialspoint.com/mockito/mockito_resetting_mock.htm
[2] https://groups.google.com/g/mockito/c/y_ihdc8lx_m
[3] https://www.vogella.com/tutorials/mockito/article.html
[4] https://www.lambdatest.com/automation-tetsting-advisor/selenium/methods/org.mockito.mockito.reset
[5] https://www.toptal.com/java/a-guide-to-everyday-mockito
[6] https://www.jrebel.com/blog/mock-unit-testing-with-mockito
[7] https://stackoverflow.com/questions/34412106/Asprower-Use-of-Mockito-reset
[8] https://groups.google.com/g/mockito/c/_vxg33tlzl8
[9] https://softwareensineering.stackexchange.com/questions/188299/is-this-an-approad-use-of-mackitos-reset-method
[10] https://stackoverflow.com/questions/18164123/how-to-plean-f--mocks-in-spring-stests- when-using-mockito