„Mockito“ tvarko patikrintas ir nepatikrintas išimtis skirtingai, visų pirma dėl to, kaip „Java“ traktuoja šias išimtis ir kaip „Mockito“ yra skirtas dirbti su metodo parašais.
patikrintos išimtys
- Apibrėžimas: Patikrintos išimtys yra išimtys, kurios tikrinamos kompiliavimo metu. Jie turi būti sugauti į „bandomo ir sugriebimo“ bloką arba deklaruoti metodo paraše naudojant raktinį žodį „metimai“ [3].
- „Mockito“ tvarkymas: „Mockito“ leidžia išmesti patikrintas išimtis iš „Mock“ objekto tik tuo atveju, jei išimtis deklaruojama metodo paraše. Jei bandysite išmesti patikrintą išimtį, kuri nėra deklaruota, „Mockito“ išmes „mockitoexception“ su pranešimu, kuriame nurodoma, kad patikrinta išimtis negalioja to metodo [1] [2]. Pvz., Jei metodas „void somemethod“ () meta „IoException“, galite naudoti „Mockito“, norėdami mesti „ioException“ be problemų.
Netikrintos išimtys
- Apibrėžimas: Netikrintos išimtys yra išimtys, kurios nėra tikrinamos kompiliavimo metu. Paprastai tai yra vykdymo laiko išimtys arba klaidos, nurodančios programavimo klaidas [3].
- „Mockito“ tvarkymas: „Mockito“ gali lengvai tvarkyti nepatikrintas išimtis be jokių apribojimų. Norėdami imituoti nepatikrintas išimtis, tokias kaip „runtimeException“ arba „NullPointerException“, galite naudoti „ThenthRow ()“ arba „Dothrow ()` “, nereikia jų deklaruoti metodo paraše [1] [2]. Tai leidžia tiesiogiai išbandyti klaidų tvarkymą netikėtoms sąlygoms.
SPRENDIMŲ SPRA
Jei jums reikia išmesti patikrintą išimtį, kuri nėra deklaruojama metodo paraše, galite naudoti „Mockito“ metodą. Šis metodas leidžia apibrėžti pasirinktinį elgesį su modeliuotu metodu, įskaitant išimčių, kurios nėra deklaruojamos metodo paraše [4], mėtymą [4]. Tačiau šis požiūris reikalauja daugiau rankinio tvarkymo ir paprastai yra ne toks aiškus, nei naudojant „ThenthRow ()“ arba „Dothrow ()“.
Apibendrinant galima pasakyti, kad „Mockito“ patikrintų išimčių tvarkymas yra labiau ribojamas, nes jis laikosi „Java“ kompiliavimo laiko patikrinimų, o nepažymėtas išimtis galima laisvai mesti, todėl juos lengviau naudoti testuose.
Citatos:[1] https://blog.sammkinng.in/blogs/checked-exception-is-invalid-forthod
[2] https://www.toptal.com/java/a-guide-to-everyday-mockito
[3] https://rollbar.com/blog/how-oter- heemlle-checked-unchecked-exceptions-in-java/
[4] https://stackoverflow.com/questions/3762047/throw-checked-exceptions-from-mocks-with-Mockito
[5] https://stackoverflow.com/questions/38852392/mockito-difference-bethe-weadhrowexception-class-and-thenthrownew-excepti
[6] https://www.reddit.com/r/java/comments/1cct4iq/if_everyone_hates_checked_exception_wheres_the/
[7] https://www.janbasktraining.com/community/java/throw-checked-exceptions-from-mocks-with-mockito
[8] https://www.youtube.com/watch?v=6-gj2w2ycmi
[9] https://www.browserstack.com/guide/mockito-trow-exception