מדומים שיעורים ושיטות אחרונות עם מוקיטו

1. סקירה כללית

במאמר קצר זה נתמקד כיצד ללעוג לשיעורים ולשיטות אחרונות - באמצעות מוקיטו.

כמו במאמרים אחרים המתמקדים במסגרת Mockito (כמו Mockito Verify, Mockito When / Then ושיטות Mockito של Mockito) נשתמש ב MyList הכיתה המוצגת להלן כשיתוף פעולה במקרי מבחן.

נוסיף שיטה חדשה להדרכה זו:

class class MyList מרחיב את AbstractList {final public int finalMethod () {return 0; }}

ואנחנו גם נאריך את זה עם סופי תת מחלקה:

כיתת גמר ציבורית FinalList מרחיב את MyList {@Override public int size () {return 1; }} 

2. הגדר את Mockito לשיטות ולשיעורים סופיים

לפני שניתן יהיה להשתמש ב- Mockito ללעוג לשיעורים ולשיטות אחרונות, יש להגדיר אותו.

עלינו להוסיף קובץ טקסט לפרויקטים src / test / resources / mockito-extensions ספריה בשם org.mockito.plugins.MockMaker והוסף שורת טקסט אחת:

מדומה- maker-inline 

מוקיטו בודק את הרחבות ספריה עבור קבצי תצורה כאשר היא נטענת. קובץ זה מאפשר ללעוג לשיטות ולשיעורים סופיים.

3. ללעוג לשיטה סופית

לאחר שהוגדר כראוי Mockito, ניתן ללעוג לשיטה סופית כמו כל אחרת:

@Test הציבור בטל כאשרMockFinalMethodMockWorks () {MyList myList = MyList חדש (); MyList mock = mock (MyList.class); מתי (mock.finalMethod ()). ואז החזר (1); assertNotEquals (mock.finalMethod (), myList.finalMethod ()); } 

על ידי יצירת מופע קונקרטי ומופע מדומה של MyList, אנו יכולים להשוות את הערכים שהוחזרו על ידי שתי הגרסאות של finalMethod () וודא שקוראים ללעג.

4. ללעוג למחלקה סופית

ללעוג לשיעור אחרון קל באותה מידה כמו ללעוג לכל שיעור אחר:

@Test ציבורי בטל כאשרMockFinalClassMockWorks () {FinalList finalList = FinalList חדש (); FinalList mock = mock (FinalList.class); כאשר (mock.size ()). ואז החזר (2); assertNotEquals (mock.size (), finalList.size ()); } 

בדומה למבחן לעיל, אנו יוצרים מופע קונקרטי ומופע מדומה של המחלקה הסופית שלנו, לועגים לשיטה ומוודאים שהמופע הלעוגי מתנהג אחרת.

5. מסקנה

במדריך מהיר זה, סקרנו כיצד ללעוג לשיעורים ולשיטות אחרונות עם Mockito באמצעות סיומת Mockito.

את הדוגמאות המלאות, כמו תמיד, ניתן למצוא באתר GitHub.