Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Finns det några vanliga fallgropar när du hånar undantag med mockito


Finns det några vanliga fallgropar när du hånar undantag med mockito


När du använder Mockito för att håna undantag kan flera vanliga fallgropar göra dina tester mindre effektiva eller svårare att underhålla. Här är några av dessa fallgropar och hur man undviker dem:

1. Överhockande **

En av de mest betydelsefulla fallgroparna är överhockande. Detta inträffar när du hånar för många beroenden, vilket leder till tester som är bräckliga och svåra att underhålla. Överhockande kan orsaka att tester fokuserar mer på hånar än på det faktiska beteendet hos systemet som testas. För att undvika detta, fokusera på att håna bara de kollaboratörer som har icke-trivialt beteende eller de vars interaktioner du vill verifiera. Använd verkliga instanser för enkla samarbeten [3].

2. Ogiltiga undantag **

Mockito säkerställer att undantaget som kastas är giltigt för den specifika stubbade metoden. Om du försöker kasta ett undantag som inte finns i metodens kontrollerade undantagslista kommer Mockito att klaga. Till exempel, om en metod inte förklarar "IOException", kommer att försöka håna den för att kasta en "IoException" att resultera i ett fel [1]. Se alltid till att det hånade undantaget är giltigt för metoden.

3. Använda `Thenthrow ()` med voidmetoder **

`när (). Thenthrow ()` kan inte användas med tomrumsmetoder eftersom det inte finns något returvärde till håna. Använd istället `dothrow ()` för tomrummetoder. Att blanda dessa metoder kan felaktigt leda till fel [2].

4. Brist på specificitet **

När du hånar undantag är det avgörande att vara specifik om vilka undantag du testar. Undvik överhockande genom att fokusera på undantag som är relevanta för testscenariot. Detta hjälper till att hålla tester fokuserade och underhållbara [2] [8].

5. Felaktig hantering av avrättningar **

Se till att applikationskoden är beredd att hantera undantag på rätt sätt, även när de är hånade under tester. Detta inkluderar testning av logiken för att hantera undantag för att säkerställa att den uppträder som förväntat [2].

6. Användning av meningsfulla felmeddelanden **

När du hånar undantag, inkludera meningsfulla meddelanden som hjälper till att diagnostisera problem om tester misslyckas. Denna praxis förbättrar tydligheten och effektiviteten i dina tester [2].

7. Testande undantagshanteringslogik **

Se till att koden hanterar undantag som förväntat. Detta innebär att verifiera att applikationen beter sig korrekt när undantag kastas, vilket är avgörande för att bygga motståndskraftiga applikationer [2].

8. Återställning och rensning av hån **

Mockito tillhandahåller funktioner som `reset ()` och `clearinvocations ()` för att hantera mocks. Dessa bör emellertid användas sparsamt. Återställning av en hålig bör endast göras i sällsynta fall, till exempel när en hålig injiceras av en behållare och inte kan återskapas för varje test. Att rensa invokationer kan vara användbara om återskapande av en hålig skulle leda till betydande omkostnader [1].

Genom att vara medveten om dessa fallgropar och följa bästa metoder kan du effektivt använda Mockito för att håna undantag och se till att dina tester är robusta och underhållbara.

Citeringar:
[1] https://www.toptal.com/java/a-guide-to-veryday-mockito
[2] https://www.browserstack.com/guide/mockito-trow-exception
[3] https://javanexus.com/blog/avoiding-mockito-testing-pitfalls
[4] https://stackoverflow.com/questions/9186604/mockito-exception-when-requires-an-argument-has-to- be-a-method-call-on
[5] https://stackoverflow.com/questions/22540108/best-practices-with-mockito
[6] https://stackoverflow.com/questions/52512548/mock-metod-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