Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Mockito eşleştiricileri ve Hamcrest eşleştiricileri arasındaki temel farklar nelerdir


Mockito eşleştiricileri ve Hamcrest eşleştiricileri arasındaki temel farklar nelerdir


Mockito eşleştiricileri ve Hamcrest eşleştiricileri, Java'da test iddiaları oluşturmak için kullanılır, ancak farklı amaçlara hizmet ederler ve farklı özelliklere sahiptirler.

Mockito Matchers

Mockito eşleştiricileri öncelikle sahte nesnelerle çalışırken beklentiler veya doğrulamalar oluşturmak için kullanılır. Bu eşleştiriciler, eşleşen nesnenin türünü döndürür, bu da sahte nesneler üzerindeki yöntem çağrılarında doğrudan bağımsız değişken olarak kullanılmasını sağlar. Örneğin, `org.mockito.matchers.any (integer.class)` `tamsayı 'döndürür, bu da` `(Mockfoo.getBarByIndex (herhangi bir (integer.class)))` [1] gibi yöntem inat veya doğrulamada kullanılmak üzere uygun hale getirir.

Mockito eşleştiricileri, Mockito'nun alaycı çerçevesiyle sorunsuz bir şekilde çalışmak için tasarlanmıştır ve sahte nesnelerdeki yöntem çağrıları için esnek beklentileri tanımlamanıza olanak tanır. Bununla birlikte, tipik olarak hamcrest ile daha yaygın olarak ilişkili olan `` AssertThat 'ifadeleri ile kullanılmazlar.

Hamcrest eşleştiricileri

Öte yandan, Hamcrest eşleştiricileri, testlerde koşulları iddia etmek için `` AssertThat 'ifadeleri ile kullanılmak üzere tasarlanmıştır. Bir durumun karşılanmadığını değerlendirmek için kullanılabilecek bir yüklem olan bir `eşleştirici 'nesnesi döndürürler. Hamcrest eşleştiricileri son derece esnektir ve karmaşık iddialar oluşturmak için `allof`,` anyof` ve `` 'gibi mantıksal operatörler kullanılarak birleştirilebilir [2] [3].

Hamcrest eşleştiricileri, net ve okunabilir test iddiaları yazmak için Junit ve diğer test çerçeveleri ile birlikte yaygın olarak kullanılır. Test kodunu daha fazla kendi belgelendirme ve anlaşılmasını daha kolay hale getiren akıcı bir API sağlarlar. Örneğin, `` AssertThat ("Merhaba", Equalto ("Merhaba")) `` iddianın amacını açıkça iletir [7].

Mockito ve Hamcrest arasında entegrasyon

Mockito eşleştiricisi gerektiren bir bağlamda bir hamcrest eşleştiricisi kullanmak istediğiniz durumlarda (örneğin, bir yöntem çağrısını stubbing veya doğrulama), Mockito `argthat` yöntemini sağlar. Bu yöntem, bir Hamcrest eşleştiricisini sarmanıza ve Mockito Matcher olarak kullanmanıza olanak tanır. Örneğin, `(Mockfoo.getBarbyDouble (Argthat (Closeto (1.0, 0.001))))` `Biraz hassasiyetle çift değer için bir koşul belirlemek için bir hamcrest eşleştiricisi kullanır [1] [5].

Mockito 2 ve daha sonra, Hamcrest ile entegrasyon, hamcrest eşleştiricileri ile çalışmak için özel olarak tasarlanmış bir `` argthat 'yöntemi sağlayan MockitOhamcrest' sınıfı aracılığıyla ele alınır [5] [10]. Bu ayrıştırma, Mockito ve Hamcrest kütüphaneleri arasındaki versiyon çatışmalarından kaçınmaya yardımcı olur.

Özetle, Mockito eşleştiricileri öncelikle alay etmek ve stubbing için kullanılırken, hamcrest eşleştiricileri iddialar için kullanılır. Her ikisi de hamcrest eşleştiricilerini Mockito'nun alaycı çerçevesine entegre etmek için `` argthat 'yönteminden yararlanarak testlerde etkili bir şekilde kullanılabilir.

Alıntılar:
[1] https://stackoverflow.com/questions/8348046/mockitos-matcher-vs-hamcrest-catcher
[2] https://www.javacodeeks.com/2015/11/hamcrest-catchers-tutorial.html
[3] https://www.vogella.com/tutorials/hamcrest/article.html
[4] https://support.intershop.com/kb/go.php/a/enfdevdoc/pages/1827636063/guide+-+7.10+
[5] https://site.mockito.org/javadoc/current/org/mockito/hamcrest/mockitohamcrest.html
[6] https://www.baeldung.com/hamcrest-text-chatchers
[7] https://automatenow.io/complete-guide-hamcrest-catchers/
[8] https://www.scalatest.org/scaladoc/3.0.7/org/scalatest/matchers.html
[9] https://hamcrest.org/javahamcrest/tutorial
[10] https://www.lambdatest.com/automation-testing-dvisor/selenium/methods/org.mockito.hamcrest.mockitohamcrest.argthat