Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon ما هي القيود المفروضة على استخدام مطابقة حجة mockito


ما هي القيود المفروضة على استخدام مطابقة حجة mockito


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