Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kuidas käsitseb Mockito kontrollitud erandeid erinevalt kontrollimata eranditest


Kuidas käsitseb Mockito kontrollitud erandeid erinevalt kontrollimata eranditest


Mockito käepidemed kontrollivad ja kontrollimata erandeid erinevalt, peamiselt tänu sellele, kuidas Java neid erandeid kohtleb ja kuidas Mockito on loodud töötama meetodi allkirjadega.

Kontrollisid erandeid

- Definitsioon: kontrollitud erandid on erandid, mida kontrollitakse kompileerimise ajal. Need peavad olema kinni plokkplokist või deklareerima meetodi allkirjas märksõna "viskamise" abil [3].
- Mockito käitlemine: Mockito võimaldab visata kontrollitud erandeid Mock -objektilt ainult siis, kui erand deklareeritakse meetodi allkirjaga. Kui proovite visata kontrollitud erandit, mida ei deklareerita, viskab Mockito sõnumiga `MockitoException", mis näitab, et kontrollitud erand on selle meetodi jaoks kehtetu [1] [2]. Näiteks kui meetod "tühine SomeMethod () viskab ioException", võite Mockito abil ilma probleemideta visata "ioException".

Kontrollimata erandid

- Definitsioon: kontrollimata erandid on erandid, mida kompileerimise ajal ei kontrollita. Tavaliselt on need käitusaja erandid või vead, mis näitavad programmeerimisvigu [3].
- Mockito käitlemine: Mockito saab hõlpsalt kontrollimata eranditega hakkama ilma piiranguteta. Võite kasutada `thenthrow ()` või `dothrow ()`, et simuleerida kontrollimata erandeid nagu "RuntiMeException" või "nullpointerException", ilma et oleks vaja neid deklareerida meetodi allkirjaga [1] [2]. See muudab ootamatute tingimuste vigade käitlemise testimise otsekoheseks.

Kontrollitud erandite lahendused

Kui peate viskama kontrollitud erandi, mida meetodi allkirjaga ei deklareerita, võite kasutada Mockito 'Doanswer ()' meetodit. See meetod võimaldab teil määratleda mõnitava meetodi kohandatud käitumise, sealhulgas erandite viskamine, mida meetodi allkirja ei deklareerita [4]. See lähenemisviis nõuab aga rohkem käsitsi käitlemist ja on üldiselt vähem sirgjooneline kui "thenthrow ()` või "dothrow ()" kasutamine.

Kokkuvõtlikult on Mockito kontrollitud erandite käsitlemine piiravam, kuna see järgib Java kompileerimisaja kontrolli, samas kui kontrollimata erandeid saab vabalt visata, muutes neid testides lihtsamaks.

Tsitaadid:
]
[2] https://www.toptal.com/java/a-guide-o-veryday-mockito
]
]
]
]
]
[8] https://www.youtube.com/watch?v=6-gj2w2ycmi
]