מדריך מהיר ל- @ DirtiesContext

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

במדריך מהיר זה נלמד על ה- @DirtiesContext ביאור. אנו נראה דרך סטנדרטית להשתמש בהערה לבדיקה.

2. @DirtiesContext

@DirtiesContext הוא ביאור לבדיקת אביב. זה מציין שהמבחן או הכיתה המשויכים משנים את ApplicationContext. זה אומר למסגרת הבדיקה לסגור ולשחזר את ההקשר לבדיקות מאוחרות יותר.

אנו יכולים להוסיף הערה לשיטת בדיקה או לשיעור שלם. על ידי הגדרת ה- MethodMode אוֹ ClassMode, אנו יכולים לשלוט מתי אביב מסמן את ההקשר לסגירה.

אם אנחנו ממקמים @DirtiesContext בשיעור, ההערה חלה על כל שיטה בכיתה עם הנתון ClassMode.

3. בדיקה מבלי לנקות את הקשר האביבי

בוא נגיד שיש לנו a מִשׁתַמֵשׁ:

מחלקה ציבורית משתמש {String firstName; שם משפחה מחרוזת; }

יש לנו גם פשוט מאוד UserCache:

מחלקה ציבורית @Component UserCache {@Getter פרטית סט userList = חדש HashSet (); addUser ציבורי בוליאני (משתמש מחרוזת) {return userList.add (user); } public void printUserList (הודעת מחרוזת) {System.out.println (message + ":" + userList); }}

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

@TestMethodOrder (OrderAnnotation.class) @ExtendWith (SpringExtension.class) @SpringBootTest (classes = SpringDataRestApplication.class) class DirtiesContextIntegrationTest {@Autowired מוגן UserCache userCache; ...}

השיטה הראשונה, addJaneDoeAndPrintCache, מוסיף ערך למטמון:

@Test @Order (1) בטל addJaneDoeAndPrintCache () {userCache.addUser ("ג'יין דו"); userCache.printUserList ("addJaneDoeAndPrintCache"); }

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

addJaneDoeAndPrintCache: [Jane Doe]

הַבָּא, printCache מדפיס שוב את מטמון המשתמש:

@Test @Order (2) בטל printCache () {userCache.printUserList ("printCache"); }

הוא מכיל את השם שנוסף במבחן הקודם:

printCache: [Jane Doe]

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

4. שימוש @DirtiesContext

עכשיו נראה @DirtiesContext עם ברירת המחדל MethodMode, AFTER_METHOD. משמעות הדבר היא כי אביב יסמן את ההקשר לסגירה לאחר השלמת שיטת הבדיקה המתאימה.

כדי לבודד שינויים במבחן, אנו מוסיפים @DirtiesContext. בואו נראה איך זה עובד.

ה addJohnDoeAndPrintCache שיטת הבדיקה מוסיפה משתמש למטמון. הוספנו גם את @DirtiesContext ביאור, האומר שההקשר צריך להיסגר בסוף שיטת הבדיקה:

@DirtiesContext (methodMode = MethodMode.AFTER_METHOD) @ Test @ Order (3) בטל addJohnDoeAndPrintCache () {userCache.addUser ("ג'ון דו"); userCache.printUserList ("addJohnDoeAndPrintCache"); }

התפוקה היא כעת:

addJohnDoeAndPrintCache: [John Doe, Jane Doe]

סוף כל סוף, printCacheAgain מדפיס את המטמון שוב:

@Test @Order (4) בטל printCacheAgain () {userCache.printUserList ("printCacheAgain"); }

בהפעלת שיעור המבחנים המלא, אנו רואים את טעינת הקשר האביבי בין לבין addJohnDoeAndPrintCache ו printCacheAgain. אז המטמון מתחדש מחדש, והפלט ריק:

printCacheAgain: []

5. שלבי בדיקה נתמכים אחרים

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

5.1. רמת כיתה

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

  • לפני השיעור: לפני שיעור המבחנים הנוכחי
  • BEFORE_EACH_TEST_METHOD: לפני כל שיטת בדיקה בכיתת הבדיקה הנוכחית
  • AFTER_EACH_TEST_METHOD: אחרי כל שיטת בדיקה בכיתת הבדיקה הנוכחית
  • אחרי השיעור: לאחר שיעור המבחנים הנוכחי

5.2. רמת שיטה

ה MethodMode אפשרויות לשיטה בודדת מגדירים מתי מאפסים את ההקשר:

  • לפני המטר: לפני שיטת הבדיקה הנוכחית
  • AFTER_METHOD: לאחר שיטת הבדיקה הנוכחית

6. מסקנה

במאמר זה הצגנו את @DirtiesContext ביאור בדיקה.

כמו תמיד, קוד הדוגמה זמין ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found