Geleneksel Hamcrest eşleştiricileri üzerinde Mockitohamcrest'i kullanmak, özellikle birim testlerde alay etmek için Mockito ile çalışırken çeşitli avantajlar sunar. İşte temel faydalar:
1. Mockito ile entegrasyon: Mockitohamcrest, Hamcrest eşleştiricilerini Mockito'nun alaycı çerçevesiyle sorunsuz bir şekilde entegre etmenizi sağlar. Bu entegrasyon, sadece geleneksel hamcrest eşleştiricileri tarafından doğrudan desteklenmeyen karmaşık argüman eşleşmesi ile saplamalar veya yöntem çağrılarını doğrulamak için çok önemlidir. Örneğin, bir Hamcrest eşleştiricisini bir Mockito eşleştiricisine dönüştürmek için `MockitOhamcrest.argthat` kullanabilirsiniz, bu da Hamcrest'in Mockito bağlamlarında zengin eşleştirici setini kullanmanızı sağlar [1] [10] [12].
2. Sürümden kaçınma Uyumsuzlukları: Mockito, geçmişte kullanıcılar için sorunlara neden olan sürüm uyumsuzluklarından kaçınmak için 2.1.0 sürümünde Hamcrest'ten ayrıldı. Mockitohamcrest, hamcrest'in belirli bir versiyonuna sıkıca bağlanmadan Hamcrest eşleştiricilerini kullanmanın bir yolunu sağlar, böylece potansiyel çatışmaları azaltır [1] [10].
3. Argüman Eşleştirmede Esneklik: Mockitohamcrest, karmaşık argüman eşleştirme senaryolarını tanımlamak için Hamcrest'in esnek ve etkileyici eşleştiricilerini kullanmanızı sağlar. Bu, özellikle belirli bir aralıkta belirli alt tabakalar veya sayılar içeren belirli koşullarla eşleşen argümanlar ile bir yöntemin çağrıldığını doğrulamanız gerektiğinde yararlıdır [4] [12].
4. Geliştirilmiş okunabilirlik ve kendi kendini belgeleme kodu: Mockitohamcrest aracılığıyla Hamcrest eşleştiricilerini kullanarak testleriniz kendi belgelendirme ve okunması kolay kalabilir. Eşleştiriciler testin amacını açıkça ifade ederek geliştiricilerin ek yorumlara ihtiyaç duymadan neyin test edildiğini anlamalarını kolaylaştırır [3] [9].
5. Daha iyi hata mesajları: İddialar başarısız olduğunda, Hamcrest hata ayıklamaya önemli ölçüde yardımcı olabilecek ayrıntılı ve anlamlı hata mesajları sağlar. Bu, Mockitohamcrest kullanılırken özellikle yararlıdır, çünkü sahte bir doğrulamanın neden başarısız olduğunu belirlemeye yardımcı olur ve sorunları teşhis etmeyi kolaylaştırır [3] [9].
6. Özelleştirme ve Genişletilebilirlik: Hamcrest'in Matcher API'sı, özel test ihtiyaçlarınıza göre özel eşleştiriciler oluşturmanızı sağlar. Mockitohamcrest ile birleştirildiğinde, bu genişletilebilirlik, uygulamanızın mantığına tam olarak uyan daha hedefli ve etkileyici testler yazmanızı sağlar [6] [9].
Özetle, Mockitohamcrest, Mockito'nun alaycı yeteneklerinin Hamcrest'in esnek ve etkileyici eşleştiricileri ile güçlü bir kombinasyonunu sunar, test okunabilirliğini, esnekliği ve sürdürülebilirliği artırır.
Alıntılar:[1] https://site.mockito.org/javadoc/current/org/mockito/hamcrest/mockitohamcrest.html
[2] https://stackoverflow.com/questions/20441594/mockito- and-hamcrest-how-to-ifyfocation-of-collection-argument
[3] https://automatenow.io/complete-guide-hamcrest-catchers/
[4] https://www.lambdatest.com/automation-testing-dvisor/selenium/methods/org.mockito.hamcrest.mockitohamcrest.mockitohamcrest
[5] https://www.javadoc.io/doc/org.mockito/mockito-core/2.2.9/org/mockito/argumentMatcher.html
[6] https://www.javacodeeks.com/2015/11/custom-hamcrest-catchers.html
[7] https://www.lambdatest.com/automation-testing-dvisor/selenium/classes/org.mockito.hamcrest.mockitohamcrest
[8] https://site.mockito.org/javadoc/current/index.html?org%2fmockito%2fargumentMatcher.html
[9] https://www.vogella.com/tutorials/hamcrest/article.html
[10] https://weblab.tudelft.nl/docs/mockito/3.10/org/mockito/hamcrest/mockitohamcrest.html
[11] https://truth.dev/comparison.html
[12] https://stackoverflow.com/questions/8348046/mockitos-matcher-vs-hamcrest-catcher