Bij het gebruik van Mockito om uitzonderingen te bespotten, kunnen verschillende veel voorkomende valkuilen uw tests minder effectief of moeilijker te onderhouden maken. Hier zijn enkele van deze valkuilen en hoe ze te vermijden:
1. Overmocking **
Een van de belangrijkste valkuilen is overspoelen. Dit gebeurt wanneer u te veel afhankelijkheden bespot, wat leidt tot tests die kwetsbaar en moeilijk te onderhouden zijn. Overmocking kan ervoor zorgen dat tests zich meer op de mocks concentreren dan op het daadwerkelijke gedrag van het te testen systeem. Om dit te voorkomen, concentreer u zich op het bespotten van alleen de medewerkers die niet-triviaal gedrag hebben of die wiens interacties u wilt verifiëren. Gebruik echte instanties voor eenvoudige samenwerkingen [3].2. Ongeldige uitzonderingen **
Mockito zorgt ervoor dat de uitzondering die wordt gegooid geldig is voor de specifieke gestompte methode. Als u probeert een uitzondering te geven die niet in de lijst met uitzonderingen van de methode staat, zal Mockito klagen. Als een methode bijvoorbeeld niet `ioxceptie 'verklaart, zal het proberen om het te bespotten om een` ioxceptie' te gooien, een fout [1]. Zorg er altijd voor dat de bespotte uitzondering geldig is voor de methode.3. Gebruiken `thenhrow ()` met nietige methoden **
`wanneer (). thenhrow ()` kan niet worden gebruikt met ongeldige methoden omdat er geen retourwaarde is om te bespotten. Gebruik in plaats daarvan `dothrow ()` voor nietige methoden. Het verkeerd mengen van deze methoden kan leiden tot fouten [2].4. Gebrek aan specificiteit **
Bij het bespotten van uitzonderingen is het cruciaal om specifiek te zijn over welke uitzonderingen u test. Vermijd overmocking door zich te concentreren op uitzonderingen die relevant zijn voor het testscenario. Dit helpt tests gefocust en onderhoudbaar te houden [2] [8].5. Onjuiste afhandeling van executies **
Zorg ervoor dat de applicatiecode is opgesteld om uitzonderingen correct af te handelen, zelfs wanneer het tijdens tests wordt bespot. Dit omvat het testen van de logica voor het verwerken van uitzonderingen om ervoor te zorgen dat deze zich gedraagt zoals verwacht [2].6. Gebruik van zinvolle foutmeldingen **
Wanneer u uitzonderingen bespot, neemt u zinvolle berichten op om problemen te helpen diagnosticeren als de tests mislukken. Deze praktijk verbetert de duidelijkheid en effectiviteit van uw tests [2].7. Uitzonderingsbehandelingslogica testen **
Zorg ervoor dat de code uitzonderingen behandelt zoals verwacht. Dit houdt in dat de toepassing zich correct gedraagt wanneer uitzonderingen worden gegooid, wat cruciaal is voor het bouwen van veerkrachtige toepassingen [2].8. Resetten en spot opruimen **
Mockito biedt functies zoals `reset ()` en `clearInvocations ()` voor het beheren van mocks. Deze moeten echter spaarzaam worden gebruikt. Het resetten van een mock mag alleen in zeldzame gevallen worden gedaan, zoals wanneer een mock wordt geïnjecteerd door een container en niet voor elke test kan worden nagebouwd. Het opruimen van aanroepen kan nuttig zijn als het opnieuw creëren van een mock zou leiden tot aanzienlijke overhead [1].Door zich bewust te zijn van deze valkuilen en het volgen van best practices, kunt u Mockito effectief gebruiken om uitzonderingen te bespotten en ervoor te zorgen dat uw tests robuust en onderhoudbaar zijn.
Citaten:[1] https://www.toptal.com/java/a-guide-to-reyday-mockito
[2] https://www.browstack.com/guide/mockito-throw-exception
[3] https://javanexus.com/blog/avoiding-mockito-testing-pitfalls
[4] https://stackoverflow.com/questions/9186604/mockito-exception-wen-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-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