Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon ما هي الاختلافات الرئيسية بين متطابقات Mockito و Hamcrest Matchers


ما هي الاختلافات الرئيسية بين متطابقات Mockito و Hamcrest Matchers


يتم استخدام كل من Mockito Matchers و Hamcrest Matchers في Java لإنشاء تأكيدات الاختبار ، ولكنها تخدم أغراض مختلفة ولها خصائص مميزة.

Mockito Matchers

تستخدم مطابقة Mockito في المقام الأول لإعداد التوقعات أو التحقق عند العمل مع الكائنات الوهمية. يعيد هؤلاء المطابقات نوع الكائن الذي يتم مطابقته ، مما يسمح باستخدامهم مباشرة كوسائط في استدعاءات الأسلوب على الكائنات الوهمية. على سبيل المثال ، "org.mockito.matchers.any (integer.class)` إرجاع "عدد صحيح" ، مما يجعله مناسبًا للاستخدام في الأسلوب الذي يتصرف أو التحقق ، مثل "عندما (mockfoo.getBarbyIndex (أي (integer.class))))).

تم تصميم Mockito Matchers للعمل بسلاسة من خلال إطار Mockito الساخط ، مما يتيح لك تحديد التوقعات المرنة لمكالمات الأسلوب على الكائنات الوهمية. ومع ذلك ، لا يتم استخدامها عادةً مع عبارات "التأكيد" ، والتي ترتبط بشكل أكثر شيوعًا بـ Hamcrest.

Hamcrest Matchers

من ناحية أخرى ، تم تصميم Matchers Hamcrest لاستخدامها مع عبارات `assertthat` لتأكيد الظروف في الاختبارات. إنهم يعيدون كائن "مطابق" ، وهو مسند يمكن استخدامه لتقييم ما إذا كان قد تم استيفاء حالة. تعتبر Matchers Hamcrest مرنة للغاية ويمكن دمجها باستخدام عوامل منطقية مثل `allof` و `anyof` و "لا" لإنشاء تأكيدات معقدة [2] [3].

يستخدم Hamcrest Matchers على نطاق واسع بالاقتران مع Junit وأطر الاختبار الأخرى لكتابة تأكيدات اختبار واضحة وقابلة للقراءة. أنها توفر واجهة برمجة تطبيقات بطلاقة تجعل رمز الاختبار أكثر توحيدًا ذاتيًا وأسهل في الفهم. على سبيل المثال ، "Assertthat (" Hello "، equalto (" Hello "))` بوضوح ينقل نية التأكيد [7].

التكامل بين Mockito و Hamcrest

في الحالات التي ترغب في استخدامها في Hamcrest Matcher في سياق يتطلب مطابقة Mockito (على سبيل المثال ، استدعاء أو التحقق من استدعاء الطريقة) ، يوفر Mockito طريقة "Argthat`. تتيح لك هذه الطريقة لف مطابقة Hamcrest واستخدامها كمطابقة Mockito. على سبيل المثال ، عندما (mockfoo.getBarbyDouble (Argthat (Closeto (1.0 ، 0.001)))) يستخدم مطابقة Hamcrest لتحديد حالة لقيمة مزدوجة مع بعض الدقة [1] [5].

في Mockito 2 وبعد ذلك ، يتم التعامل مع التكامل مع Hamcrest من خلال فئة "Mockitohamcrest" ، والتي توفر طريقة "Argthat" مصممة خصيصًا للعمل مع Hamcrest Matchers [5] [10]. يساعد هذا الفصل في تجنب النزاعات بين مكتبات Mockito و Hamcrest.

باختصار ، يتم استخدام مطابقة Mockito في المقام الأول للسخرية والعباء ، بينما يتم استخدام مطابقة Hamcrest للتأكيدات. يمكن استخدام كلاهما معًا بشكل فعال في الاختبارات من خلال الاستفادة من طريقة "Argthat" لدمج مطاعم Hamcrest في إطار Mockito الساخط.

الاستشهادات:
[1] https://stackoverflow.com/questions/8348046/mockitos-matcher-vs-hamcrest-matcher
[2] https://www.javacodegeeks.com/2015/11/hamcrest-matchers-tutorial.html
[3] https://www.vogella.com/tutorials/hamcrest/article.html
[4] https://support
[5] https://site.mockito.org/javadoc/current/org/mockito/hamcrest/mockitohamcrest.html
[6] https://www.baeldung.com/hamcrest-text-matchers
[7]
[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-advisor/selenium/methods/org.mockito.hamcrest.mockitohamcrest.argthat