Mockito -kahvat tarkistettiin ja tarkistamattomat poikkeukset eri tavalla, pääasiassa siitä, kuinka Java kohtelee näitä poikkeuksia ja kuinka Mockito on suunniteltu toimimaan menetelmien allekirjoituksilla.
tarkistetut poikkeukset
- Määritelmä: Tarkistetut poikkeukset ovat poikkeuksia, jotka tarkistetaan käännöshetkellä. Ne on joko kiinni `kokeilukuoret '-lohkoon tai ilmoitettava menetelmän allekirjoituksessa käyttämällä" heitto "-avainsanaa [3].
- Mockiton käsittely: Mockito sallii tarkistettujen poikkeusten heittämisen pilkkiobjektista vain, jos poikkeus ilmoitetaan menetelmän allekirjoituksessa. Jos yrität heittää tarkistetun poikkeuksen, jota ei ilmoiteta, Mockito heittää "MockitoException" -viestin, joka osoittaa, että tarkistettu poikkeus on virheellinen kyseiselle menetelmään [1] [2]. Esimerkiksi, jos menetelmä `tyhjä somemethod () heittää ioexception`, voit käyttää Mockitoa heittääksesi` ioexception` ilman ongelmia.
tarkistamattomia poikkeuksia
- Määritelmä: Tarkkailemattomat poikkeukset ovat poikkeuksia, joita ei tarkisteta käännöshetkellä. Ne ovat tyypillisesti ajonaikaisia poikkeuksia tai virheitä, jotka osoittavat ohjelmointivirheitä [3].
- Mockiton käsittely: Mockito pystyy helposti käsittelemään tarkistamattomia poikkeuksia ilman rajoituksia. Voit käyttää `vitahimoa ()` tai `dothrow ()` simuloida tarkistamattomia poikkeuksia, kuten `apertimeException` tai` nollpointerexception`, tarvitsematta niiden ilmoittamista menetelmän allekirjoituksessa [1] [2]. Tämän ansiosta virheiden käsittely on suoraviivaista odottamattomien olosuhteiden suhteen.
Tarkastettujen poikkeusten kiertotapa
Jos joudut heittämään tarkistetun poikkeuksen, jota ei ilmoiteta menetelmän allekirjoituksessa, voit käyttää Mockiton "Doanswer () -menetelmää. Tämän menetelmän avulla voit määritellä räätälöity käyttäytyminen pilkkamenetelmään, mukaan lukien poikkeukset, joita ei ilmoiteta menetelmän allekirjoituksessa [4]. Tämä lähestymistapa vaatii kuitenkin enemmän manuaalista käsittelyä ja on yleensä vähemmän suoraviivaista kuin `vitahrow ()` tai `dothrow ()` `.
Yhteenvetona voidaan todeta, että Mockiton tarkistettujen poikkeusten käsittely on rajoittavampaa, koska se noudattaa Javan kääntöajan tarkistuksia, kun taas tarkistamattomia poikkeuksia voidaan heittää vapaasti, mikä helpottaa niitä helpommin testeissä.
Viittaukset:.
[2] https://www.toptal.com/java/a-guide-to-everyday-mockito
.
[4] https://stackoverflow.com/questions/3762047/throw-checked-exceptions-from-mocks
.
.
[7] https://www.janbasktraining.com/community/java/throw-checked-exceptions-from-mocks
[8] https://www.youtube.com/watch?v=6-gj2w2ycmi
[9] https://www.browerstack.com/guide/mockito-throw-exception