موكيتو الإطار
مقدمة
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 المستخدمة في هذه الوظيفة حتى تتجاوز كل هذه الشروط.
نصيحة من وجوادي.