İstisnaları taklit etmek için Mockito'yu kullanırken, birkaç yaygın tuzak testlerinizi daha az etkili veya daha zor hale getirebilir. İşte bu tuzaklardan bazıları ve bunlardan nasıl kaçınılacağı:
1. Aşırı alay **
En önemli tuzaklardan biri aşırı alay. Bu, çok fazla bağımlılıkla alay ettiğinizde, kırılgan ve bakımı zor testlere yol açtığınızda ortaya çıkar. Aşırı alaycı, testlerin, test edilen sistemin gerçek davranışından daha fazla alaylara odaklanmasına neden olabilir. Bundan kaçınmak için, yalnızca önemsiz davranışları olan veya etkileşimlerini doğrulamak istediğiniz işbirlikçileri alay etmeye odaklanın. Basit işbirlikleri için gerçek örnekleri kullanın [3].2. Geçersiz istisnalar **
Mockito, atılan istisnanın spesifik stube yöntemi için geçerli olmasını sağlar. Yöntemin kontrol edilen istisnalar listesinde olmayan bir istisna atmaya çalışırsanız, Mockito şikayet eder. Örneğin, bir yöntem `` ioException '' beyan etmezse, bir 'ioException' atmaya çalışmak bir hataya neden olur [1]. Her zaman alay edilen istisnanın yöntem için geçerli olduğundan emin olun.3.
`(). Bunun yerine, boş yöntemler için `dothrow ()` kullanın. Bu yöntemlerin yanlış karıştırılması hatalara yol açabilir [2].4. Özgüllük eksikliği **
İstisnalarla alay ederken, hangi istisnaları test ettiğiniz konusunda spesifik olmak çok önemlidir. Test senaryosuyla ilgili istisnalara odaklanarak aşırı alay etmekten kaçının. Bu, testlerin odaklanmış ve korunabilir tutulmasına yardımcı olur [2] [8].5. İnfazların yanlış işlenmesi **
Testler sırasında alay edildiğinde bile, uygulama kodunun istisnaları doğru bir şekilde ele almaya hazır olduğundan emin olun. Bu, beklendiği gibi davranmasını sağlamak için istisnaların işlenmesi için mantığın test edilmesini içerir [2].6. Anlamlı hata mesajlarının kullanımı **
İstisnalarla alay ederken, testler başarısız olursa sorunların teşhis edilmesine yardımcı olacak anlamlı mesajlar ekleyin. Bu uygulama testlerinizin netliğini ve etkinliğini arttırır [2].7. Test İstisna İşlem Mantığı **
Kodun istisnaları beklendiği gibi işlediğinden emin olun. Bu, uygulamanın istisnalar atıldığında doğru davrandığını, bu da esnek uygulamalar oluşturmak için çok önemli olduğunu doğrulamayı içerir [2].8. Mocks sıfırlama ve temizleme **
Mockito, alayları yönetmek için `reset ()` ve `ClearInVocations () 'gibi özellikler sağlar. Ancak, bunlar az miktarda kullanılmalıdır. Bir sahte sıfırlama, sadece bir konteyner tarafından bir sahte enjekte edildiğinde ve her test için yeniden oluşturulamayacağı gibi nadir durumlarda yapılmalıdır. Bir sahte yeniden yaratmak önemli bir yüke yol açarsa, çağrıların temizlenmesi yararlı olabilir [1].Bu tuzakların farkında olarak ve en iyi uygulamaları takip ederek, istisnaları taklit etmek ve testlerinizin sağlam ve sürdürülebilir olduğundan emin olmak için Mockito'yu etkili bir şekilde kullanabilirsiniz.
Alıntılar:[1] https://www.toptal.com/java/a-guide-to-emveryday-mockito
[2] https://www.browserstack.com/guide/mockito-throw-exception
[3] https://javanexus.com/blog/avoiding-mockito-testing-pitfalls
[4] https://stackoverflow.com/questions/9186604/mockito-upption-when-wen-wen-wen-wen-wen-wen-wen-ton-t-a-a-a-method-call-
[5] https://stackoverflow.com/questions/22540108/best-practices-with-mockito
[6] https://stackoverflow.com/questions/52512548/mock-method-to-do-not-throw-an-exception/52514628
[7] https://contributors.scala-lang.org/t/mockito-testing-nulls-and-exceptions/3915
[8] https://www.janbasktraining.com/community/java/throw-checked-exceptions-from-mocks-with-mockito