موكيتو الإطار

في برمجة الكمبيوتر لاختبار تطبيقات Java ، يتم استخدام إطار عمل Mokito. هذا إطار مفتوح المصدر / مجاني متاح للتنزيل. إنها في الأساس إطار اختبار يساعد في اكتشاف الأخطاء. إن تنفيذ Mokito كإطار هزائي يعمل في إنشاء كائنات "Test Double" ، أي كائنات وهمية ، يضمن أن التفاعل مع mocks يبقى صحيحًا.

مقدمة

Mokito هو إطار لاختبار تطبيقات جافا. يحاكي سلوك الكائنات المعقدة ويسهل تطوير اختبار الوحدة واكتشاف الأخطاء.

Mockito مفتوح المصدر ومتاح على العنوان التالي: //mockito.org/.

يعتمد Mockito على مبدأ كائن وهمية يحاكي سلوك كائن آخر.

يتم تنفيذ اختبار Mockito في عدة خطوات:

  • إنشاء كائن وهمية
  • وصف السلوك المتوقع
  • باستخدام يسخر
  • التحقق من أن التفاعل مع mocks صحيح

مثال

 الفئة العامة ClassA {public ClassA () {} public void fonc1 () {} public void fonc2 () {} public int fonc3 (int a، int b) {return a + b؛ }} الفئة العامة ClassB {ClasseA ca؛ ClassA getCa () {return ca؛ } public void setCa (ClassA ca) {this.ca = ca؛ } جمهور ClassB () {ca = جديد ClassA ()؛ } public void met1 () {ca.fonc1 ()؛ ca.fonc1 ()؛ System.out.println (ca.fonc3 (5، 6))؛ } public void met2 () {ca.fonc2 ()؛ }} 

وحدة اختبار فئة ClassB:

 استيراد ثابت org.mockito.Mockito.mock. استيراد org.mockito.Mockito ؛ اختبار الطبقة العامة {public static void main (String [] args) {ClassA ca = mock (ClassA.class)؛ ClassB cb = جديد ClassB ()؛ cb.setCa (كاليفورنيا)؛ cb.met1 ()؛ Mockito.verify (ca، Mockito.times (2)). fonc1 ()؛ Mockito.verify (ca، Mockito.times (1)). fonc3 (Mockito.anyInt ()، Mockito.anyInt ())؛ }} 

تحليل الكود:

ClassA كاليفورنيا = وهمية (ClassA.class) ؛

=> يخلق AC ، فئة وهمية الفئة.

cb.setCa (كاليفورنيا)؛

=> إنه يؤثر على كائن ca في كائن cb.

cb.met1 () ؛

=> يستدعي الكائن باستخدام طريقة cb met1 ().

Mockito.verify (ca Mockito.times (2)). func1 ()؛

=> يتحقق من أن طريقة وهمية func1 تسمى مرتين.

Mockito.verify (ca، Mockito.times (1)). fonc3 (Mockito.anyInt ()، Mockito.anyInt ())؛

=> تحقق من أن طريقة func3 ca الوهمية تسمى مرة واحدة فقط بواسطة معلمتين عدد صحيح.

عندما يفشل التحقق يتم إنشاء استثناء.

مثال:

Mockito.verify (ca، Mockito.atLeast (1)). fonc2 ()؛

=> ينشئ هذا السطر الاستثناء التالي:

استثناء في موضوع "رئيسي" مطلوب ولكن لم يتم التذرع به:

 classA.fonc2 ()؛ -> في Test01.main (Test01.java:16) 

==> يشير إلى أن طريقة func2 () يسخر من AC غير معروف.

يمكنك أيضًا تغيير النتائج التي يتم إرجاعها من إحدى الوظائف.

 System.out.println ("نتيجة ca.fonc (3،3) هي" + ca.fonc3 (3 ، 3)) ؛ Mockito.when (ca.fonc3 (Mockito.anyInt ()، Mockito.anyInt ())). thenReturn (Integer.valueOf (5))؛ System.out.println ("نتيجة ca.fonc (3،3) هي" + ca.fonc3 (3 ، 3)) ؛ 

تحليل الكود:

 Mockito.when (ca.fonc3 (Mockito.anyInt () و Mockito.anyInt ())). thenReturn (Integer.valueOf (5))؛ 

# قيمة الإرجاع للدالة fonc3 (وهمية) كانت 0 .

نجبرها على 5 .

هذا مفيد بشكل خاص عند استخدام الوظائف التي تحتوي على العديد من الميزات (الشروط ، الحلقات ، إلخ) ونريد التحقق من سلوك أي وظيفة. لذلك نحتاج إلى تكوين mocks المستخدمة في هذه الوظيفة حتى تتجاوز كل هذه الشروط.

نصيحة من وجوادي.

المقال السابق المقالة القادمة

نصائح الأعلى