מדריך ל- @ RepeatTest ב- Junit 5

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

במאמר מהיר זה, אנו הולכים להסתכל על @RepeatedTest ביאור שהוצג ב- JUnit 5. זה מספק לנו דרך עוצמתית לכתוב כל מבחן שנרצה לחזור עליו מספר פעמים.

אם אתה רוצה ללמוד עוד על JUnit 5, אנא עיין במאמרים האחרים שלנו המסבירים את היסודות והמדריך ל- JUnit 5.

2. Maven תלות והתקנה

הדבר הראשון שיש לציין הוא כי JUnit 5 זקוק ל- Java 8 כדי להריץ אותו. אחרי שאמרנו את זה, בואו נסתכל על התלות של Maven:

 org.junit.jupiter junit-jupiter-engine 5.7.0 test 

זו התלות העיקרית ב- JUnit 5 שעלינו להוסיף כדי לכתוב את המבחנים שלנו. בדוק את הגרסה האחרונה של החפץ כאן.

3. פשוט @RepeatedTest דוגמא

יצירת בדיקה חוזרת היא פשוטה - פשוט הוסף את @RepeatedTest ביאור נוסף על שיטת הבדיקה:

@RepeatedTest (3) בטל repeatTest (TestInfo testInfo) {System.out.println ("ביצוע בדיקה חוזרת"); assertEquals (2, Math.addExact (1, 1), "1 + 1 צריך להיות שווה 2"); }

שימו לב שבמקום סטנדרטי @מִבְחָן ביאור, אנו משתמשים @RepeatedTest למבחן היחידה שלנו. הבדיקה הנ"ל תבוצע שלוש פעמים כאילו אותו מבחן נכתב שלוש פעמים.

דוחות הבדיקה (קבצי הדוחות או התוצאות בכרטיסייה JUnit ב- IDE שלך) יציגו את כל הביצועים:

חזרה 1 מתוך 3 (repeatTest (TestInfo)) חזרה 2 מתוך 3 (repeatTest (TestInfo)) חזרה 3 מתוך 3 (repeatTest (TestInfo))

4. תמיכה במחזור החיים עבור @RepeatedTest

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

@BeforeEach בטל לפניEachTest () {System.out.println ("לפני כל בדיקה"); } @AfterEach בטל afterEachTest () {System.out.println ("אחרי כל בדיקה"); System.out.println ("======================="); }

אם נפעיל את הבדיקה הקודמת שלנו, התוצאות יוצגו בקונסולה:

לפני כל מבחן מבצע בדיקה חוזרת אחרי כל בדיקה ====================== לפני כל בדיקה ביצוע בדיקה חוזרת אחרי כל בדיקה ============ ========== לפני כל בדיקה ביצוע בדיקה חוזרת אחרי כל בדיקה =======================

כפי שאנו רואים, @ לפני כל אחד ו @אחרי כל אחד שיטות נקראות סביב כל ביצוע.

5. קביעת התצורה של שם הבדיקה

בדוגמה הראשונה ראינו כי פלט דוח הבדיקה אינו מכיל שום מזהה. ניתן להגדיר זאת באמצעות ה- שֵׁם תְכוּנָה:

@RepeatedTest (value = 3, name = RepeatedTest.LONG_DISPLAY_NAME) בטל repeatTestWithLongName () {System.out.println ("ביצוע בדיקה חוזרת עם שם ארוך"); assertEquals (2, Math.addExact (1, 1), "1 + 1 צריך להיות שווה 2"); }

הפלט יכיל כעת את שם השיטה יחד עם אינדקס החזרה:

repeatTestWithLongName () :: חזרה 1 מתוך 3 (repeatTestWithLongName ()) repeatTestWithLongName () :: חזרה 2 מתוך 3 (repeatTestWithLongName ()) repeatTestWithLongName () :: חזרה 3 מתוך 3 (repeatTestWithLongName ())

אפשרות נוספת היא להשתמש מבחן חוזר. SHORT_DISPLAY_NAME אשר יפיק את השם הקצר של הבדיקה:

חזרה 1 מתוך 3 (repeatTestWithShortName ()) חזרה 2 מתוך 3 (repeatTestWithShortName ()) חזרה 3 מתוך 3 (repeatTestWithShortName ())

אם עם זאת, עלינו להשתמש בשם המותאם אישית שלנו, זה אפשרי מאוד:

@RepeatedTest (value = 3, name = "שם מותאם אישית {currentRepetition} / {totalRepetitions}") void repeatTestWithCustomDisplayName (TestInfo testInfo) {assertEquals (2, Math.addExact (1, 1), "1 + 1 צריך להיות שווה 2") ; }

ה {currentRepetition} ו {totalRepetitions} הם מצייני המיקום לחזרה הנוכחית ומספר החזרות הכולל. ערכים אלה ניתנים באופן אוטומטי על ידי JUnit בזמן הריצה, ואין צורך בתצורה נוספת. התפוקה פחות או יותר מה שציפינו:

שם מותאם אישית 1/3 (repeatTestWithCustomDisplayName ()) שם מותאם אישית 2/3 (repeatTestWithCustomDisplayName ()) שם מותאם אישית 3/3 (repeatTestWithCustomDisplayName ())

6. גישה ל- RepetitionInfo

חוץ מ שֵׁם תכונה, JUnit מספק גישה למטא-נתונים של החזרה גם בקוד הבדיקה שלנו. זה מושג על ידי הוספת א RepetitionInfo פרמטר לשיטת הבדיקה שלנו:

@RepeatedTest (3) בטל repeatTestWithRepetitionInfo (RepetitionInfo repetitionInfo) {System.out.println ("Repetition #" + repetitionInfo.getCurrentRepetition ()); assertEquals (3, repetitionInfo.getTotalRepetitions ()); }

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

חזרה מס '1 חזרה מס' 2 חזרה מס '3

ה RepetitionInfo מסופק על ידי RepetitionInfoParameterResolver וזמין רק בהקשר של @RepeatedTest.

7. מסקנה

במדריך מהיר זה, בחנו את @RepeatedTest ביאור המסופק על ידי JUnit ולמד דרכים שונות להגדירו.

אל תשכח לבדוק את קוד המקור המלא עבור מאמר זה ב- GitHub.


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