Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon En quoi la méthode de réinitialisation de Mockito diffère-t-elle des ClearInvocations


En quoi la méthode de réinitialisation de Mockito diffère-t-elle des ClearInvocations


Mockito fournit deux méthodes qui peuvent être utilisées pour gérer l'état des simulations pendant les tests: `reset () 'et` ClearInvocations ()'. Bien que les deux méthodes soient utilisées pour gérer l'état simulé, ils servent des objectifs différents et ont des effets distincts sur les simulations.
Méthode

Mockito's `reset ()`

La méthode `reset () 'dans Mockito est utilisée pour réinitialiser entièrement un objet simulé. Cela signifie qu'il efface non seulement le nombre d'invocation, mais supprime également tout coup qui a été réglé sur la simulation. Cela peut être problématique car cela vous oblige à recouvrir la simulation après l'avoir réinitialisé si vous souhaitez maintenir un comportement spécifique pour vos tests. L'utilisation de «réinitialisation ()» est généralement découragée car elle peut entraîner des tests complexes et moins ciblés. Il est conseillé d'éviter d'utiliser `réinitialiser () ', sauf si vous avez absolument nécessaire, car il peut masquer l'intention de vos tests et les rendre plus difficiles à maintenir [1] [5] [7].

Méthode

Mockito's `ClearInvocations () '

La méthode `ClearInvocations () ', introduite dans Mockito 2.1, vous permet de dégager le nombre d'invocation d'une simulation sans réinitialiser son coup. Cela signifie que vous pouvez continuer à utiliser les mêmes talons tout en vous assurant que chaque test commence par une ardoise propre concernant les invocations de la méthode. Cette méthode est utile lorsque vous devez vérifier les interactions dans un scénario avec état ou lorsque vous utilisez des cadres d'injection de dépendance, mais il doit toujours être utilisé avec parcimonie. Il est généralement recommandé d'éviter d'utiliser des `ClearInvocations () ', sauf si nécessaire, car il peut également compliquer les tests s'ils ne sont pas utilisés de manière réfléchie [1] [4] [9].

Différences clés

- Stubbing: `reset ()` supprime tout coup, vous obligeant à recouvrir la simulation, tandis que `clearInvocations ()` laisse un coup intact.
- Counts d'invocation: les deux méthodes dénnent des comptes d'invocation, mais `reset ()` le fait dans le cadre d'une réinitialisation complète, tandis que `ClearInvocations ()` cible spécifiquement le nombre d'invocation.
- Complexité des tests: les deux méthodes peuvent conduire à des tests plus complexes s'ils ne sont pas utilisés avec soin, mais `réinitialiser () 'tend à causer plus de problèmes en raison de la nécessité de recouvrir les maquettes.

En résumé, bien que les deux méthodes puissent être utilisées pour gérer l'état simulé, «réinitialiser ()» est plus invasif et généralement découragé, tandis que «ClearInvocations ()» est plus ciblé mais doit toujours être utilisé judicieusement pour maintenir des tests propres et ciblés.

Citations:
[1] https://softwareensineering.stackexchange.com/questions/188299/is-this-an-approad-use-of-mackitos-reset-method
[2] https://www.lambdatest.com/automation-tetsting-advisor/selenium/methods/org.mockito.internal.mockitocore.clearinvocations
[3] https://www.lambdatest.com/automation-tetsting-advisor/selenium/methods/org.mockito.internal.mockitocore.clearallcaches
[4] https://www.lambdatest.com/automation-tetsting-advisor/selenium/methods/org.mockito.mockito.clearinvocations
[5] https://stackoverflow.com/questions/19441538/what-is-the-correct-alternative-to-resetting-a-mock-after-setup-in-mockito
[6] https://reflectorring.io/clean-unit-tests-with-mockito/
[7] https://stackoverflow.com/questions/30081161/mockito-does-verify-method-reboot-mbumber-of-times
[8] https://javadoc.io/doc/org.mockito/mockito-core/2.25.1/org/mockito/mockito.html
[9] https://wesome.org/mockito-3-clear-invocations
[10] https://github.com/mockk/mockk/discussions/842