وهمية
Mocks هي الكائنات التي تخزن استدعاءات الطريقة. يشار إليها باسم الأغلفة الديناميكية للتبعيات المستخدمة في الاختبارات. يتم استخدامه لتسجيل والتحقق من التفاعل بين فئات Java. تُعرف النسخة الوهمية بأنها النسخة الأقوى والأكثر مرونة من اختبار الزوجي. نحن نستخدم طريقة للسخرية تسمى وهمية () .
تتمثل الوظيفة الرئيسية لاستخدام المحاكاة في أنها تمنح التحكم الكامل في سلوك الكائنات التي يتم الاستهزاء بها. تُستخدم الكائنات الوهمية عمومًا في التحقق من السلوك . مصطلح السلوك يعني التحقق من الأساليب والمسارات الصحيحة التي يتم تطبيقها على الكائنات.
يتم إنشاء النماذج النموذجية في الغالب باستخدام مكتبة أو إطار عمل محاكاة مثل Mockito وJMock وEasyMock. يتم استخدامه لاختبار مجموعة كبيرة من الاختبارات حيث لا تكون بذرة كافية. إحدى الوظائف الأساسية للمحاكاة هي أنه يمكننا التحقق من عدد مرات استدعاء طريقة معينة.
يوضح مقتطف التعليمات البرمجية التالي كيفية استخدام mock().
ToDoService doService = mock(ToDoService.class);
كعب الروتين
بذرة هي الكائنات التي تحتوي على بيانات محددة مسبقًا وتستخدمها لتقديم استجابات أثناء الاختبارات. بمعنى آخر، كعب الروتين هو كائن يشبه كائنًا حقيقيًا مع أقل عدد من الطرق المطلوبة للاختبار. يتم استخدام بذرة عندما لا نرغب في استخدام كائنات من شأنها أن تعطي استجابة ببيانات حقيقية. يُشار إلى كعب الروتين على أنه الأخف وزنًا، والنسخة الأكثر ثباتًا من الاختبار تتضاعف.
الوظائف الرئيسية للدعائم هي:
- يقوم دائمًا بإرجاع الإخراج المحدد مسبقًا بغض النظر عن الإدخال.
- ويمكن استخدامه ليشابه كائنات قاعدة البيانات.
- تُستخدم بذرة لتقليل التعقيدات التي تحدث أثناء إنشاء الكائنات الحقيقية. وهي تستخدم أساسا للأداء التحقق من الدولة .
جاسوس
الجواسيس معروفون باسم كائنات وهمية جزئيا . وهذا يعني أن التجسس يقوم بإنشاء كائن جزئي أو نصف دمية من الكائن الحقيقي عن طريق تعقب أو تجسس الكائنات الحقيقية. في التجسس، يظل الشيء الحقيقي دون تغيير، ونحن فقط نتجسس على بعض الأساليب المحددة له. بمعنى آخر، نحن نأخذ الكائن (الحقيقي) الموجود و يستبدل أو جاسوس فقط بعض أساليبه.
الجواسيس مفيدون عندما يكون لدينا فصل دراسي كبير مليئ بالأساليب، ونريد أن نسخر من أساليب معينة. في هذا السيناريو، ينبغي لنا أن نفضل استخدام الجواسيس بدلاً من السخرية والكعب. إنه يستدعي سلوك الطريقة الحقيقية، إذا لم يتم إيقاف الطرق.
في Mockito، يتم استخدام طريقة التجسس () لإنشاء كائنات تجسس. يسمح لنا باستدعاء الطرق العادية للكائن الحقيقي. يوضح مقتطف التعليمات البرمجية التالي كيفية استخدام طريقة التجسس ().
List spyArrayList = spy(ArrayList.class);
الفرق بين كعب وهمي
حدود | كعب الروتين | وهمية |
---|---|---|
مصدر البيانات | مصدر بيانات كعب الروتين مضمن. وعادة ما يكون مقترنًا بإحكام بمجموعة الاختبار. | يتم إعداد البيانات الموجودة على النماذج عن طريق الاختبارات. |
انشأ من قبل | عادةً ما تكون البذرة مكتوبة بخط اليد، ويتم إنشاء بعضها بواسطة الأدوات. | عادةً ما يتم إنشاء النماذج باستخدام مكتبة خارجية مثل Mockito وJMock وWireMock. |
الاستخدام | تستخدم بذرة بشكل أساسي لمجموعات الاختبار البسيطة. | تُستخدم المحاكاة بشكل أساسي في مجموعات الاختبار الكبيرة. |
واجهة المستخدم الرسومية (GUI) | لا تحتوي بذرة واجهة المستخدم الرسومية. | تحتوي النماذج المقلدة على واجهة مستخدم رسومية. |
فيما يلي بعض الاختلافات بين الوهمي والتجسس:
منشئ السلسلة
حدود | وهمية | جاسوس |
---|---|---|
الاستخدام | يتم استخدام المحاكاة لإنشاء كائنات وهمية أو وهمية بالكامل. يتم استخدامه بشكل رئيسي في مجموعات الاختبار الكبيرة. | يتم استخدام الجواسيس لإنشاء كائنات وهمية جزئية أو نصفية. كما هو الحال مع الجواسيس الوهميين، يتم استخدام الجواسيس أيضًا في أجنحة الاختبار الكبيرة. |
السلوك الافتراضي | عند استخدام كائنات وهمية، فإن السلوك الافتراضي للطرق (في حالة عدم إيقافها) هو عدم القيام بأي شيء (عدم تنفيذ أي شيء). | عند استخدام كائنات تجسس، فإن السلوك الافتراضي للطرق (في حالة عدم إيقافها) هو سلوك الطريقة الحقيقية. |
في دروسنا السابقة، ناقشنا بعض الأمثلة على الطعن والسخرية والتجسس. لفهم الفرق بين الطعن والاستهزاء والتجسس بشكل أفضل، راجع الأمثلة.