Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hvordan håndtaker Mockito -håndtaket unntak forskjellig fra ukontrollerte unntak


Hvordan håndtaker Mockito -håndtaket unntak forskjellig fra ukontrollerte unntak


Mockito -håndtak avkjørte og ukontrollerte unntak annerledes, først og fremst på grunn av hvordan Java behandler disse unntakene og hvordan Mockito er designet for å fungere med metodesignaturer.

Sjekket unntak

- Definisjon: Sjekket unntak er unntak som er sjekket på kompileringstidspunktet. De må enten bli fanget i en `Try-Catch '-blokk eller erklæres i metodesignaturen ved å bruke søkeordet` Kast' [3].
- Mockito -håndtering: Mockito tillater å kaste sjekket unntak fra et hånlig objekt bare hvis unntaket er erklært i metodesignaturen. Hvis du prøver å kaste et sjekket unntak som ikke er erklært, vil Mockito kaste en `MockitoException` med en melding som indikerer at det sjekket unntaket er ugyldig for den metoden [1] [2]. For eksempel, hvis en metode `void somemethod () kaster IOException`, kan du bruke Mockito til å kaste en` IOException` uten problemer.

Ukontrollerte unntak

- Definisjon: Ukontrollerte unntak er unntak som ikke er sjekket på kompileringstidspunktet. De er typisk unntak eller feil fra runtime som indikerer programmeringsfeil [3].
- Mockito -håndtering: Mockito kan enkelt håndtere ukontrollerte unntak uten noen begrensninger. Du kan bruke `thenthrow ()` eller `dothrow ()` for å simulere ukontrollerte unntak som `runtimeException` eller` nullpointerexception` uten å trenge at de skal bli erklært i metodesignaturen [1] [2]. Dette gjør det enkelt å teste feilhåndtering for uventede forhold.

Løsninger for sjekket unntak

Hvis du trenger å kaste et sjekket unntak som ikke er erklært i metodesignaturen, kan du bruke Mockitos `doanswer ()` -metode. Denne metoden lar deg definere tilpasset atferd for en hånlig metode, inkludert kaste unntak som ikke er erklært i metodesignaturen [4]. Imidlertid krever denne tilnærmingen mer manuell håndtering og er generelt mindre grei enn å bruke `thenthrow ()` eller `dothrow ()`.

Oppsummert er Mockitos håndtering av sjekket unntak mer restriktiv fordi den holder seg til Javas kompileringstidskontroller, mens ukontrollerte unntak kan kastes fritt, noe som gjør dem enklere å bruke i tester.

Sitasjoner:
[1] https://blog.sammkinng.in/blogs/checked-exception-is-invalid-for-this-metod
[2] https://www.toptal.com/java/a-guide-to-veryday-mockito
[3] https://rollbar.com/blog/how-to-handle-checked-unchecked-exceptions-in-java/
[4] https://stackoverflow.com/questions/3762047/throw-checked-exceptions-from-focher-with-mockito
[5] https://stackoverflow.com/questions/38852392/mockito-diffence-between-thenthrowexception-class-and-tenthrownew-scepti
[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-march-with-mockito
[8] https://www.youtube.com/watch?v=6-gj2w2ycmi
[9] https://www.browsstack.com/guide/mockito-throw-exception