Mockito Mession Matchers هي أدوات قوية تستخدم في اختبار الوحدة لتحديد الوسائط بمرونة عند إعداد السخرية. ومع ذلك ، فإنهم يأتون مع عدة قيود:
1. سياق الاستخدام: لا يمكن استخدام مطابقة الوسيطة إلا في سياق طرق التعبير أو التحقق. لا يمكن استخدامها عند استدعاء طرق الكائن قيد الاختبار. على سبيل المثال ، لا يمكنك استخدام `anystring ()` عند استدعاء طريقة على كائن حقيقي ؛ بدلاً من ذلك ، يجب عليك استخدام قيمة ملموسة [1] [5].
2. الاتساق عبر الوسيطات: عند استخدام مطابقة وسيطة لحجة واحدة ، يجب أن تستخدم جميع الوسائط الأخرى أيضًا المطابقة. لا يمكنك مزج المطاعم مع قيم ملموسة للوسائط المختلفة في نفس الطريقة استدعاء الطريقة. هذا مصدر شائع لـ `invaliduseofmatchersexception` [7] [8].
3. قيود الاستهزاء: لا يمكن أن يسخر Mockito طرقًا معينة مثل `equals ()` ، `hashcode ()` ، أو الأساليب النهائية. في حين يمكن استخدام مطابقة الحجة مع الأساليب التي يمكن أن تسخر منها ، فإنها لا تمدد القدرة على السخرية من هذه الأساليب المقيدة [3].
4. أنواع مطابقة الوسيطة: يوفر Mockito مجموعة متنوعة من مطاعم الوسيطة المدمجة (على سبيل المثال ، `anyint ()` ، `anystring ()` ، `isnull ()`) ، ولكن يجب عليك اختيار النوع الصحيح للسياسة. على سبيل المثال ، قد لا يعمل استخدام `` أي () بنوع بدائي كما هو متوقع ؛ بدلاً من ذلك ، استخدم مطابقة أكثر تحديدًا مثل `anyboolean ()` للمعلمات المنطقية [7].
5. مطابقات الوسيطة المخصصة: بينما يتيح لك Mockito إنشاء مطابقة مخصصة باستخدام طريقة `argthat ()` ، يتطلب تطبيق واجهة `ingumentmatcher` دراسة متأنية لضمان تصرف المتطابق كما هو متوقع في سيناريوهات مختلفة [2] [4].
6. التكامل مع المكتبات الأخرى: عند استخدام Mockito مع مكتبات أخرى مثل Hamcrest ، تأكد من معالجة التكامل بشكل صحيح. على سبيل المثال ، قد يوضح Sonarqube استخدامات معينة لـ `argthat ()` مع Hamcrest Matchers غير صحيحة ، حتى لو كانت صالحة [4].
باختصار ، على الرغم من أن مطابقة Mockito للحجة متعددة الاستخدامات ، فإن استخدامهم يقتصر على سياقات محددة ويتطلب الاتساق عبر وسيطات الطريقة. بالإضافة إلى ذلك ، لا يتغلبون على القيود الأساسية لـ Mockito فيما يتعلق بالأساليب أو الطبقات.
الاستشهادات:[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-mockito-argument-matchers-in-of-usage-mockitohamcrest-adapter/38429
[5] https://groups.google.com/g/mockito/c/zi6pcqudtco
[6] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.argumentmatchers.isnull
[7] https://stackoverflow.com/questions/16458136/mockito-invalid-use-of-argument-matchers
[8] https://www.baeldung.com/mockito-argument-matchers