Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kā Mockito rokturis pārbaudīja izņēmumus atšķirīgi no nekontrolētiem izņēmumiem


Kā Mockito rokturis pārbaudīja izņēmumus atšķirīgi no nekontrolētiem izņēmumiem


Mockito rīkojas ar pārbaudītiem un nepārbaudītiem izņēmumiem atšķirīgi, galvenokārt tāpēc, ka Java izturas pret šiem izņēmumiem un kā Mockito ir paredzēts darbam ar metodes parakstiem.

Pārbaudīja izņēmumus

- Definīcija: Pārbaudītie izņēmumi ir izņēmumi, kas tiek pārbaudīti apkopošanas laikā. Viņiem jābūt vai nu pieķertiem, kas ir “izmēģināta-catch` blokā, vai arī jāpaziņo metodes parakstā, izmantojot atslēgvārdu“ met ”[3].
- Mockito vadāmība: Mockito ļauj izmest pārbaudītus izņēmumus no izspēles objekta tikai tad, ja izņēmums tiek deklarēts metodes parakstā. Ja jūs mēģināt mest pārbaudītu izņēmumu, kas netiek deklarēts, Mockito izmetīs “MockitoException” ar ziņojumu, kas norāda, ka pārbaudītais izņēmums ir nederīgs šai metodei [1] [2]. Piemēram, ja metode `void somemethod () met ioexception`, varat izmantot Mockito, lai bez problēmām izmestu` ioException`.

Pārbaudītie izņēmumi

- Definīcija: nekontrolēti izņēmumi ir izņēmumi, kas netiek pārbaudīti apkopošanas laikā. Parasti tie ir izpildlaika izņēmumi vai kļūdas, kas norāda uz programmēšanas kļūdām [3].
- Mockito apstrāde: Mockito var viegli apstrādāt nekontrolētus izņēmumus bez jebkādiem ierobežojumiem. Jūs varat izmantot `thentrow ()` vai `dothrow ()`, lai modelētu nekontrolētus izņēmumus, piemēram, “RuntimeException` vai` nullpointerexception`, neprasot tos paziņot metodes parakstā [1] [2]. Tas padara vienkāršu neparedzētu nosacījumu pārbaudīšanas kļūdu apstrādi.

Risinājumi pārbaudītajiem izņēmumiem

Ja jums ir jāizmet pārbaudīts izņēmums, kas nav deklarēts metodes parakstā, varat izmantot Mockito's `doanswer ()` metodi. Šī metode ļauj definēt pielāgotu izturēšanos izspēles metodei, ieskaitot izņēmumu mešanu, kas nav deklarēti metodes parakstā [4]. Tomēr šai pieejai ir nepieciešama vairāk manuāla apstrāde, un tā parasti ir mazāk vienkārša nekā `thentrow ()` vai `dothrow ()` `lietošana.

Rezumējot, Mockito pārbaudīto izņēmumu apstrāde ir ierobežojošāka, jo tā ievēro Java apkopošanas laika pārbaudes, savukārt nepārbaudītus izņēmumus var izmest brīvi, padarot tos vieglāk lietojamus testos.

Atsauces:
[1] https://blog.sammkinng.in/blogs/checked-exception-is-invalid-for-this-metod
[2] https://www.toptal.com/java/a-guide-to-everyday-mockito
[3] https://rollbar.com/blog/how-to-handle-checked-unchecked-exceptions-in-java/
.
[5] https://stackoverflow.com/questions/38852392/mockito-difference-ween-wear-thenthrowexception-class-and-thenthrownew-excepti
[6] https://www.reddit.com/r/java/comments/1cct4iq/if_everyone_hates_checked_exceptions_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-throw-exception