Å tilbakestille hån i Mockito er en funksjon som lar deg gjenbruke spotte gjenstander ved å tømme deres stubbe og interaksjoner. Å bruke `tilbakestilling ()` frarådes imidlertid med mindre det er absolutt nødvendig, da det kan indikere dårlig strukturerte tester. Her er noen beste fremgangsmåter for å tilbakestille hån i Mockito:
Forstå når du skal bruke `Reset ()`
-Unngå å bruke `Reset ()`: Den primære grunnen `Reset ()` Eksisterer er å støtte containerinjiserte spotter, for eksempel de som brukes i arvkode eller tredjepartsgrensesnitt. I de fleste tilfeller, spesielt med godt designet testdrevet kode, bør du unngå å bruke `reset ()` og i stedet fokusere på å lage små, fokuserte testmetoder [2] [4].
- Kodelukt: Hvis du finner ut at du trenger å bruke `Reset ()` innenfor en testmetode, kan det være et tegn på at testene dine er for komplekse eller dekker for mange scenarier. Dette kan indikere et behov for å refaktor testene dine eller koden som testes [2].
alternativer til `reset ()`
- Lag nye hån: I stedet for å tilbakestille hån, kan du vurdere å lage nye spotte forekomster for hver testmetode. Denne tilnærmingen sikrer at hver test starter med en ren skifer, noe som reduserer risikoen for interaksjoner fra tidligere tester som påvirker den nåværende [4].
- Bruk `ClearInvocations ()`: Hvis du bare trenger å tømme påkallingshistorikken (f.eks. For å bekrefte interaksjoner uten å påvirke stubbing), bruk `mockito.clearinvocations ()`. Denne metoden fjerner påkallingshistorikk uten å tilbakestille stubber, noe som kan være nyttig i visse scenarier [4].
Beste praksis for å tilbakestille hån
- Tilbakestill etter hver test: Hvis du må tilbakestille hån, gjør det etter hver testmetode ved å bruke en `@etter` merknad i junit eller` afterEach () `i Scalatest. Dette sikrer at hver test starter med en ren spotttilstand [3] [10].
- Unngå å tilbakestille før tester: Tilbakestilling av hån før hver test kan føre til forvirring rundt hvilken tilstand hån er i starten av testen. Det er generelt tydeligere å lage nye hån eller tilbakestille etter tester [10].
- Bruk rammefunksjoner: I rammer som vår kan du bruke merknader som `@MockBean` automatisk håndtere hånlig tilbakestilling etter hver test, og eliminere behovet for manuelle tilbakestillinger [10].
Konklusjon
Mens Mockito gir `Reset ()` -metoden for spesifikke brukstilfeller, er det generelt tilrådelig å unngå bruk til fordel for renere, mer fokusert testdesign. Ved å lage nye hån for hver test eller bruke rammefunksjoner for å administrere hånstatus, kan du sikre robuste og vedlikeholdbare tester uten behov for manuelle tilbakestillinger.
Sitasjoner:[1] https://www.tutorialspoint.com/mockito/mockito_resetting_mock.htm
[2] https://site.mockito.org/javadoc/current/org/mockito/mockito.html
[3] https://twitter.github.io/finatra/user-guide/testing/mocks.html
[4] https://softwareEngineering.stackexchange.com/questions/188299/is-this-an-apropriate-use-of-mockitos-resst-metod
[5] https://github.com/mockito/mockito-kotlin/issues/513
[6] https://symflower.com/en/company/blog/2024/how-to-do-mocking-spring-boot/
[7] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.reset
[8] https://github.com/mockito/mockito/issues/183
[9] https://www.toptal.com/java/a-guide-to-veryday-mockito
[10] https://stackoverflow.com/questions/18164123/how-to-clean-p-cock-in-spring-tests-when-sing-mockito