Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Mockito argüman eşleştiricilerini kullanmanın sınırlamaları nelerdir?


Mockito argüman eşleştiricilerini kullanmanın sınırlamaları nelerdir?


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