Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Er der nogen almindelige faldgruber, når man spottende undtagelser med Mockito


Er der nogen almindelige faldgruber, når man spottende undtagelser med Mockito


Når du bruger Mockito til at håne undtagelser, kan flere almindelige faldgruber gøre dine test mindre effektive eller vanskeligere at vedligeholde. Her er nogle af disse faldgruber, og hvordan man undgår dem:

1. overmocking **

En af de mest betydningsfulde faldgruber er over hån. Dette sker, når du håner for mange afhængigheder, hvilket fører til test, der er skrøbelige og svære at vedligeholde. Over-hån kan få tests til at fokusere mere på spottet end på den faktiske opførsel af det system, der blev testet. For at undgå dette skal du kun fokusere på at håne på de samarbejdspartnere, der har ikke-triviel opførsel eller dem, hvis interaktioner du vil verificere. Brug rigtige tilfælde til enkle samarbejder [3].

2. Ugyldige undtagelser **

Mockito sikrer, at den undtagelse, der kastes, er gyldig for den specifikke stubbede metode. Hvis du prøver at kaste en undtagelse, der ikke er i metodens kontrollerede undtagelsesliste, vil Mockito klage. For eksempel, hvis en metode ikke erklærer 'ioException', vil forsøg på at spotte den til at kaste en 'IOException' resultere i en fejl [1]. Sørg altid for, at den spottede undtagelse er gyldig for metoden.

3. ved hjælp af `Thenthrow ()` med tomrumsmetoder **

`Hvornår (). Thenthrow () 'kan ikke bruges med tomrumsmetoder, fordi der ikke er nogen returværdi at spotte. Brug i stedet `dothrow ()` til tomrumsmetoder. Blanding af disse metoder forkert kan føre til fejl [2].

4. Mangel på specificitet **

Når man håner undtagelser, er det vigtigt at være specifik om, hvilke undtagelser du tester. Undgå overmocking ved at fokusere på undtagelser, der er relevante for testscenariet. Dette hjælper med at holde tests fokuserede og vedligeholdelige [2] [8].

5. Forkert håndtering af henrettelser **

Sørg for, at applikationskoden er parat til at håndtere undtagelser korrekt, selv når de hånes under test. Dette inkluderer test af logikken for håndtering af undtagelser for at sikre, at den opfører sig som forventet [2].

6. Brug af meningsfulde fejlmeddelelser **

Når man spottende undtagelser, skal du medtage meningsfulde meddelelser, der hjælper med at diagnosticere problemer, hvis test mislykkes. Denne praksis forbedrer klarheden og effektiviteten af ​​dine test [2].

7. Test af undtagelseshåndtering Logik **

Sørg for, at koden håndterer undtagelser som forventet. Dette involverer at verificere, at applikationen opfører sig korrekt, når undtagelser kastes, hvilket er afgørende for at opbygge elastiske applikationer [2].

8. Nulstilling og clearing af mocks **

Mockito leverer funktioner som `nulstilling ()` og `clearInvocations ()` til styring af mocks. Disse bør dog bruges sparsomt. Nulstilling af en mock bør kun udføres i sjældne tilfælde, f.eks. Når en spot injiceres af en beholder og ikke kan genskabes for hver test. Clearing påkaldt kan være nyttige, hvis genskabelse af en spot ville føre til betydelig overhead [1].

Ved at være opmærksom på disse faldgruber og efter bedste praksis kan du effektivt bruge Mockito til at håne undtagelser og sikre, at dine test er robuste og vedligeholdelige.

Citater:
[1] https://www.toptal.com/java/a-guide-to-veryday-mockito
[2] https://www.browserstack.com/guide/mockito-throw-exception
[3] https://javanexus.com/blog/avoiding-mockito-testing-pitfalls
)
[5] https://stackoverflow.com/questions/22540108/best-practices-with-mockito
[6] https://stackoverflow.com/questions/52512548/mock-method-to-do-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