Mockito gir to metoder som kan brukes til å administrere tilstanden til håp under testing: `reset ()` og `clearInvocations ()`. Mens begge metodene brukes til å håndtere hånstatus, tjener de forskjellige formål og har tydelige effekter på håpene.
mockitos `reset ()` metode
"Reset ()` -metoden i Mockito brukes til å tilbakestille et hånlig objekt helt. Dette betyr at det ikke bare teller påkallingstallet, men også fjerner all stubbing som er satt på hån. Dette kan være problematisk fordi det krever at du skal stille den hånlige etter å ha tilbakestilt den hvis du vil opprettholde spesifikk oppførsel for testene dine. Bruken av `reset ()` er generelt motløs fordi det kan føre til komplekse og mindre fokuserte tester. Det anbefales å unngå å bruke `tilbakestilling ()` med mindre det er absolutt nødvendig, da det kan skjule intensjonen med testene dine og gjøre dem vanskeligere å vedlikeholde [1] [5] [7].
Mockitos `ClearInvocations ()` Metode
'ClearInvocations () ` -metoden, introdusert i Mockito 2.1, lar deg tømme påkallingstallene til en hån uten å tilbakestille dens stubbe. Dette betyr at du kan fortsette å bruke de samme stubbene, samtidig som du sikrer at hver test starter med en ren skifer angående metodepåforninger. Denne metoden er nyttig når du trenger å bekrefte interaksjoner i et statlig scenario eller når du bruker avhengighetsinjeksjonsrammer, men den bør fremdeles brukes sparsomt. Det anbefales generelt å unngå å bruke `clearInvocations ()` med mindre det er nødvendig, da det også kan komplisere tester hvis ikke brukes gjennomtenkt [1] [4] [9].
viktige forskjeller
- Stubbing: `RESET ()` Fjerner all stubbing, og krever at du skal stubbe den hånlige, mens `ClearInvocations ()` blader stubber intakt.
- Innkallingstall: Begge metodene klare påkallingstall, men `reset ()` gjør det som en del av en full tilbakestilling, mens `clearInvocations ()` spesifikt er rettet mot påkallingstall.
- Testkompleksitet: Begge metodene kan føre til mer komplekse tester hvis de ikke brukes nøye, men `tilbakestilling ()` har en tendens til å forårsake flere problemer på grunn av behovet for å gjenopprette hån.
Oppsummert, mens begge metodene kan brukes til å administrere hånstatus, er `reset ()` mer inngripende og generelt motløs, mens `clearInvocations ()` er mer målrettet, men fortsatt bør brukes med omtanke for å opprettholde rene og fokuserte tester.
Sitasjoner:[1] https://softwareEngineering.stackexchange.com/questions/188299/is-this-an-apropriate-use-of-mockitos-resst-metod
[2] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.internal.mockitocore.clearinvocations
[3] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.internal.mockitocore.clearallcaches
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.clearinvocations
[5] https://stackoverflow.com/questions/19441538/what-is-the-correct-alternative-to-ressting-a-mock-after-setup-in-mockito
[6] https://reflectoring.io/clean-unit-tests-with-mockito/
[7] https://stackoverflow.com/questions/30081161/mockito-does--verify-method-reboot-number-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