Mockito argüman eşleştiricileri, alaylar oluştururken argümanları esnek bir şekilde belirlemek için birim testinde kullanılan güçlü araçlardır. Ancak, çeşitli sınırlamalarla birlikte gelirler:
1. Kullanım Bağlamı: Bağımsız değişken eşleştiricileri yalnızca stubbing veya doğrulama yöntemleri bağlamında kullanılabilir. Test edilen nesnede yöntem çağrısı yapılırken kullanılamazlar. Örneğin, gerçek bir nesnede bir yöntem çağırırken `anystring ()` kullanamazsınız; Bunun yerine, somut bir değer kullanmalısınız [1] [5].
2. Argümanlar arasında tutarlılık: Bir argüman için bir argüman eşleştiricisi kullanırken, diğer tüm argümanlar da eşleştiricileri kullanmalıdır. Aynı yöntem çağrısında farklı bağımsız değişkenler için eşleştiricileri somut değerlerle karıştıramazsınız. Bu, `` InvaliduseOfMatchersException '' nun ortak bir kaynağıdır [7] [8].
3. Alaycı Sınırlamalar: Mockito, `Equals ()` `` Hashcode () `veya son yöntemler gibi belirli yöntemleri taklit edemez. Argüman eşleştiricileri alay edilebilecek yöntemlerle kullanılabilirken, bu kısıtlı yöntemleri alay etme yeteneğini genişletmezler [3].
4. Argüman Eşleme Türleri: Mockito, çeşitli yerleşik argüman eşleştiricileri (örn., `Anyt ()`, `anystring ()` `` isnull () `) sağlar, ancak bağımsız değişken için doğru türü seçmelisiniz. Örneğin, ilkel tipte herhangi bir () `kullanmak beklendiği gibi çalışmayabilir; Bunun yerine, boolean parametreleri için `anybooolean () 'gibi daha spesifik bir eşleştirici kullanın [7].
5. Özel Argüman Eşleştiricileri: Mockito, `` argthat () `yöntemini kullanarak özel eşleştiriciler oluşturmanıza izin verirken,` argumentMatcher 'arayüzünü uygulamak, eşleşmenin farklı senaryolarda beklendiği gibi davranmasını sağlamak için dikkatli bir şekilde değerlendirilmesini gerektirir [2] [4].
6. Diğer kütüphanelerle entegrasyon: Mockito'yu Hamcrest gibi diğer kütüphanelerle kullanırken, entegrasyonun uygun şekilde ele alındığından emin olun. Örneğin, Sonarqube, geçerli olsalar bile, Hamcrest eşleştiricileriyle `` argthat () 'nin belirli kullanımlarını yanlış olarak işaretleyebilir [4].
Özetle, Mockito argüman eşleştiricileri çok yönlü olsa da, kullanımları belirli bağlamlarla sınırlıdır ve yöntem argümanları arasında tutarlılık gerektirir. Ayrıca, Mockito'nun belirli yöntemler veya sınıflar konusunda temel sınırlamalarının üstesinden gelmezler.
Alıntılar:[1] https://groups.google.com/g/mockito/c/ul9ymczqnky
[2] https://kenkousen.substack.com/p/tales-from-the-jar-side-a-mockito
[3] https://ioflood.com/blog/mockito/
[4] https://community.sonarsource.com/t/problem-with-java-rule-s6073
[5] https://groups.google.com/g/mockito/c/zi6pcqudtco
[6] https://www.lambdatest.com/automation-testing-dvisor/selenium/methods/org.mockito.argumentMatchers.isnull
[7] https://stackoverflow.com/questions/16458136/mockito-invalid-use-of-argument-chatchers
[8] https://www.baeldung.com/mockito-argument-catchers