תוכן עניינים:

האם אתה יכול לבדוק שיטות סטטיות ביחידה?
האם אתה יכול לבדוק שיטות סטטיות ביחידה?

וִידֵאוֹ: האם אתה יכול לבדוק שיטות סטטיות ביחידה?

וִידֵאוֹ: האם אתה יכול לבדוק שיטות סטטיות ביחידה?
וִידֵאוֹ: [QUESTION] Can we mock static methods in unit tests? 2024, דֵצֶמבֶּר
Anonim

ל יחידה לבדוק אותך צריך לקחת חתיכה קטנה של שֶׁלְךָ קוד, חווט מחדש את התלות שלו ו מִבְחָן את זה בבידוד. קשה עם זה שיטות סטטיות , לא רק במקרה שהם ניגשים למדינה גלובלית אלא אפילו אם הם פשוט מתקשרים לאחרים שיטות סטטיות.

בהתחשב בכך, איך בודקים שיטות סטטיות?

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

  1. השתמש ב-PowerMock JUnit runner: @RunWith(PowerMockRunner.
  2. הכריז על מעמד המבחן שאנו לועגים לו:
  3. אמור ל-PowerMock את שם המחלקה המכילה שיטות סטטיות:
  4. הגדר את הציפיות, אומר ל-PowerMock לצפות לקריאה לשיטה סטטית:

באופן דומה, האם נוכל ללעוג לשיטות סטטיות C#? 4 תשובות. Moq (ואחרים מבוססי DynamicProxy לַעֲגָנִי מסגרות) אינם מסוגלים לִלְעוֹג כל דבר שאינו וירטואלי או מופשט שיטה . לחלופין, אתה יכול לשנות את העיצוב שלך לקריאות מופשטות שיטות סטטיות , וספק את ההפשטה הזו לכיתה שלך באמצעות הזרקת תלות.

לגבי זה, איך בודקים יחידות שיטות פרטיות?

מבחן יחידה רק ה-API הזמין לציבור. כשכותבים בדיקות יחידה , לחקות את ההתנהגות של לקוחות ה-SUT. אל תעשה לבדוק שיטות פרטיות . אוֹ מבחן יחידה אותם בעקיפין, באמצעות ה-API הציבורי, או לחלץ אותם למחלקות נפרדות ו מִבְחָן השיעורים האלה במקום.

מהי שיטה סטטית?

ב-Java, א שיטה סטטית הוא שיטה ששייך למחלקה ולא למופע של מחלקה. ה שיטה נגיש לכל מופע של מחלקה, אבל שיטות המוגדרים במופע יכולים לגשת רק לאותו חבר בכיתה.

מוּמלָץ: