שימוש ב- JUnit 5 עם Gradle

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

במדריך זה אנו הולכים לבצע בדיקות על פלטפורמת JUnit 5 החדשה בעזרת כלי הבנייה של Gradle.

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

אל תהסס לקרוא מדריך ל- JUnit 5 למידע נוסף על הגרסה החדשה. או המבוא ל- Gradle למידע מעמיק על כלי הבנייה.

2. הגדרת Gradle

ראשית, אנו מוודאים אם מותקנת גרסה 4.6 ומעלה של כלי הבנייה מכיוון שזו הגרסה המוקדמת ביותר שעובדת עם JUnit 5.

הדרך הפשוטה ביותר היא פשוט להפעיל את דרגה-ו פקודה:

$> דרגה - v --------------------------------------------- --------------- Gradle 4.10.2 ------------------------------- -----------------------------

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

לאחר שהתקנו הכל, עלינו להגדיר את Gradle באמצעות ה- build.gradle קוֹבֶץ.

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

בדוק {useJUnitPlatform ()} 

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

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

ה- API מופיע עם צומת-צדק-אפי. זמן הריצה הוא junit-jupiter-engine עבור יוני 5, ו- junit-vintage-engine עבור יוני 3 או 4.

נספק את שני אלה test יישום ו timeRuntimeOnly, בהתאמה:

תלות {testImplementation 'org.junit.jupiter: junit-jupiter-api: 5.3.1' testRuntimeOnly 'org.junit.jupiter: junit-jupiter-engine: 5.3.1'}

3. יצירת בדיקות

בואו נכתוב את המבחן הראשון שלנו. זה נראה בדיוק כמו גרסאות קודמות:

@Test מבטל הריק ציבוריAdd () {assertEquals (42, Integer.sum (19, 23)); }

עַכשָׁיו, אנחנו יכולים להריץ את הבדיקה על ידי ביצוע ה- מבחן ניקוי מדרגות פקודה.

כדי לוודא שאנחנו משתמשים ב- JUnit 5 נוכל לבדוק את הייבוא. היבוא עבור @מִבְחָן ו assertEquals צריכה להיות חבילה החל מ org.junit.jupiter.api:

יבוא org.junit.jupiter.api.Test; ייבא org.junit.jupiter.api.Assertions.assertEquals סטטי;

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

@Test ציבורי בטל testDivide () {assertThrows (ArithmeticException.class, () -> {Integer.divideUnsigned (42, 0);}); }

טוען זורק היא קביעה חדשה ב- JUnit5 המחליפה את הסגנון הישן של @Test (צפוי = ArithmeticException.class).

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

לאחר מכן, נחקור אינטגרציה עמוקה יותר בין Gradle ו- JUnit5.

בואו נגיד שיש לנו שני סוגים של מבחנים בסוויטה שלנו: ארוך טווח וקצר טווח. נוכל להשתמש ב- JUnit 5 @תָג ביאור:

מחשבון ציבורי מחשבוןJUnit5Test {@Tag ("איטי") @Test חלל מבחן מבחןAddMaxInteger () {assertEquals (2147483646, Integer.sum (2147183646, 300000)); } @Tag ("מהיר") @Test מבטל הריק testDivide () {assertThrows (ArithmeticException.class, () -> {Integer.divideUnsigned (42, 0);}); }}

לאחר מכן, אנו אומרים לכלי הבנייה אילו מהם לבצע. במקרה שלנו, בואו ונבצע את המבחנים קצרי הפעולה (המהירים):

בדוק {useJUnitPlatform {includeTags 'מהיר' excludeTags 'איטי'}}

5. הפעלת תמיכה ב- Old Versions

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

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

testCompileOnly 'junit: junit: 4.12' testRuntimeOnly 'org.junit.vintage: junit-vintage-engine: 5.3.1'

שים לב כיצד הפרויקט שלנו כולל כעת את שניהם ג'וניט-צדק-מנוע בנוסף ל junit-vintage-engine.

כעת אנו יוצרים מחלקה חדשה ומעתיקים ומדביקים את ה- testDivide שיטה שיצרנו קודם. לאחר מכן, אנו מוסיפים את הייבוא ​​עבור @מִבְחָן ו assertEquals. עם זאת, הפעם אנו מקפידים להשתמש בחבילות גרסה 4 הישנות המתחילות בהן org.junit:

ייבא org.junit.Assert.assertEquals סטטי; יבוא org.junit.Test; מחלקה ציבורית מחשבוןJUnit4Test {@Test חלל ציבורי testAdd () {assertEquals (42, Integer.sum (19, 23)); }}

6. מסקנה

במדריך זה שילבנו את Gradle עם JUnit 5. עוד יותר, הוספנו תמיכה גם בגירסאות 3 ו -4.

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

דוגמת הקוד המלא זמינה בפרויקט GitHub. אל תהסס להשתמש בו כנקודת התחלה לפרויקט משלך.


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