Lors de l'utilisation de Mockito pour se moquer des exceptions, plusieurs pièges courants peuvent rendre vos tests moins efficaces ou plus difficiles à maintenir. Voici quelques-uns de ces pièges et comment les éviter:
1. Over-moquen **
L'un des pièges les plus importants est la sur-moquette. Cela se produit lorsque vous vous moquez trop de dépendances, conduisant à des tests fragiles et difficiles à entretenir. La sur-moquette peut entraîner des tests davantage sur les simulations que sur le comportement réel du système testé. Pour éviter cela, concentrez-vous sur la moquerie uniquement des collaborateurs qui ont un comportement non trivial ou ceux dont vous souhaitez vérifier les interactions. Utilisez de vraies instances pour des collaborations simples [3].2. Exceptions non valides **
Mockito garantit que l'exception lancée est valide pour la méthode Stubbed spécifique. Si vous essayez de lancer une exception qui ne figure pas dans la liste des exceptions vérifiées de la méthode, Mockito se plaindra. Par exemple, si une méthode ne déclare pas «ioException», tenter de se moquer de lui pour lancer un «ioException» entraînera une erreur [1]. Assurez-vous toujours que l'exception moquante est valable pour la méthode.3. Utilisation de `thenthrow ()` avec des méthodes vides **
«Quand (). thenthrow ()` ne peut pas être utilisé avec des méthodes vides car il n'y a pas de valeur de retour à Mock. Au lieu de cela, utilisez «dothrow ()» pour les méthodes de vide. Le mélange de ces méthodes incorrectement peut entraîner des erreurs [2].4. Manque de spécificité **
Lors de la moquerie des exceptions, il est crucial d'être précis sur les exceptions que vous testez. Évitez de surclasser en vous concentrant sur les exceptions pertinentes pour le scénario de test. Cela aide à garder les tests concentrés et maintenables [2] [8].5. Manipulation incorrecte des exécutions **
Assurez-vous que le code d'application est prêt à gérer correctement les exceptions, même lorsqu'il est moqué pendant les tests. Cela comprend le test de la logique pour gérer les exceptions pour s'assurer qu'il se comporte comme prévu [2].6. Utilisation de messages d'erreur significatifs **
Lorsque vous moquez les exceptions, incluez des messages significatifs pour aider à diagnostiquer les problèmes en cas d'échec des tests. Cette pratique améliore la clarté et l'efficacité de vos tests [2].7. Tester la logique de gestion des exceptions **
Assurez-vous que le code gère les exceptions comme prévu. Cela implique de vérifier que l'application se comporte correctement lorsque des exceptions sont lancées, ce qui est crucial pour construire des applications résilientes [2].8. Réinitialisation et nettoyage des simulations **
Mockito fournit des fonctionnalités telles que `reset () 'et` ClearInvocations ()' pour gérer les simulations. Cependant, ceux-ci devraient être utilisés avec parcimonie. La réinitialisation d'une simulation ne doit être effectuée que dans de rares cas, comme lorsqu'une simulation est injectée par un conteneur et ne peut pas être recréée pour chaque test. Les invocations de compensation peuvent être utiles si la recréation d'une simulation entraînerait des frais généraux significatifs [1].En étant conscient de ces pièges et en suivant les meilleures pratiques, vous pouvez utiliser efficacement Mockito pour se moquer des exceptions et vous assurer que vos tests sont robustes et maintenables.
Citations:[1] https://www.toptal.com/java/a-guide-to-everyday-mockito
[2] https://www.browserstack.com/guide/mockito-throw-exception
[3] https://javanexus.com/blog/avoiding-mockito-testing-pitfalls
[4] https://stackoverflow.com/questions/9186604/mockito-exception-when-requires-an-argument-which-has-to-be-a-method-call-on
[5] https://stackoverflow.com/questions/22540108/best-practices-with-mockito
[6] https://stackoverflow.com/questions/52512548/mock-method-to-no--not-throw-an-exception/52514628
[7] https://contributors.scala-lang.org/t/mockito-testing-nulls-and-exceptions/3915
[8] https://www.janbasktraining.com/community/java/throw-checked-exceptions-from-mocks-with-mockito