Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Mockito, kontrolsüz istisnaları kontrolsüz istisnalardan nasıl değiştirir?


Mockito, kontrolsüz istisnaları kontrolsüz istisnalardan nasıl değiştirir?


Mockito, öncelikle Java'nın bu istisnaları nasıl ele aldığı ve Mockito'nun yöntem imzalarıyla çalışmak için nasıl tasarlandığından dolayı kontrol edilen ve işaretlenmemiş istisnaları farklı şekilde işler.

Kontrol Edilen İstisnalar

- Tanım: Kontrol edilen istisnalar, derleme zamanında kontrol edilen istisnalardır. Bir `` deneme 'bloğuna yakalanmalı veya yöntem imzasında `` atışlar' 'anahtar kelimesini kullanarak bildirilmelidirler [3].
- Mockito Taşıma: Mockito, sahte bir nesneden kontrol edilen istisnaların atılmasına izin verir, ancak istisna yöntem imzasında bildirilirse. Bildirilmeyen kontrol edilen bir istisna atmaya çalışırsanız, Mockito, kontrol edilen istisnanın bu yöntem için geçersiz olduğunu gösteren bir mesajla bir `` MockitoException '' atacaktır [1] [2]. Örneğin, bir `void someMethod () yöntemi ioException` yöntemi varsa, sorunsuz bir 'ioException' atmak için Mockito'yu kullanabilirsiniz.

Kontrolsüz İstisnalar

- Tanım: Kontrolsüz istisnalar, derleme zamanında kontrol edilmeyen istisnalardır. Genellikle programlama hatalarını gösteren çalışma zamanı istisnaları veya hatalardır [3].
- Mockito Taşıma: Mockito, herhangi bir kısıtlama olmadan kontrolsüz istisnaları kolayca işleyebilir. Yöntem imzasında [1] [2] ilan edilmesine gerek kalmadan `runtiMeException` veya` nullpointerException 'gibi kontrolsüz istisnaları simüle etmek için `thenthrow ()' veya` dothrow () 'kullanabilirsiniz. Bu, beklenmedik koşullar için hata işlemeyi test etmeyi kolaylaştırır.

İşaretli istisnalar için geçici çözümler

Yöntem imzasında bildirilmeyen kontrol edilmiş bir istisna atmanız gerekiyorsa, Mockito'nun `Douswer ()` yöntemini kullanabilirsiniz. Bu yöntem, yöntem imzasında bildirilmeyen istisnaların atılması da dahil olmak üzere sahte bir yöntemi için özel davranış tanımlamanıza olanak tanır [4]. Bununla birlikte, bu yaklaşım daha fazla manuel işleme gerektirir ve genellikle `thenthrow () 'veya` dothrow ()' kullanmaktan daha az basittir.

Özetle, Mockito'nun kontrol edilen istisnaları ele alması daha kısıtlayıcıdır, çünkü Java'nın derleme zamanı kontrollerine bağlıdır, kontrol edilmemiş istisnalar serbestçe atılabilir, bu da testlerde kullanımını kolaylaştırır.

Alıntılar:
[1] https://blog.sammkinng.in/blogs/checked-exception-is-invalid-for-this
[2] https://www.toptal.com/java/a-guide-to-emveryday-mockito
[3] https://rollbar.com/blog/how-to-handle-checked-checkeced-exceptions-in-java/
[4] https://stackoverflow.com/questions/3762047/throw-checked-exceptions-from-mocks-with-mockito
[5] https://stackoverflow.com/questions/38852392/mockito-difference-beton-throwexception-class-and-thrownwewewewewewewewewexti
[6] https://www.reddit.com/r/java/comments/1cct4iq/if_everone_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