מדריך למתחילים ל-JUnit 5

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

JUnit יכולה לשמש לבדיקה אוטומטית לשני מטרות עיקריות:

  1. לבדוק שהתוכנה פועלת כפי שצפוי שהיא תפעל
  2. לאתר ולדווח על שגיאות בקוד ולתקן אותן במהירות האפשרית

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

מה זה JUnit 5?

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

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

תכונות של JUnit 5

להלן כמה מהתכונות הפופולריות והחשובות של JUnit 5 שמבדילות אותה ממסגרות בדיקות יחידה אחרות.

Feature Description Annotations/Method
סטי בדיקות

סטי בדיקות הם בעצם קבוצת בדיקות, כמו Smoke, Sanity, או קבוצת בדיקות הקשורות לתכונה מסוימת.

JUnit 5 מאפשר יצירת סטי בדיקות שניתן להריץ יחד.

כדי להשתמש בסטי בדיקות, אנו צריכים להוסיף תלות של JUnit Platform Suite ולהשתמש באנוטציות הבאות.
@SelectPackages,
@SelectClasses, @Suite
הצהרות ההצהרות משמשות כדי לאמת את התנהגות התוכנה הצפויה. JUnit 5 מספקת שיטות הצהרה מובנות שיכולות לסייע בביצוע ההצהרות בקלות. ישנן מספר שיטות הצהרה זמינות בimport org.junit.jupiter.api.Assertions; כיתה.
כמה מהשיטות מופיעות למטה:
assertTrue(), assertFalse(),
assertEquals(), assertAll(), assertNotEquals()
סדר הרצת הבדיקות מתאים את סדר הרצת הבדיקות. זה מאפשר למפתח לשלוט על הרצת הבדיקות ולהריץ את הבדיקות בסדר ספציפי לפי הצורך. @TestMethodOrder, @Order,
@TestClassOrder
בדיקת חריגות מבצעת בדיקת חריגות שמאשרת כי החריגה הנדרשת מושלכת לבדיקה. שיטה הבאה מה
import org.junit.jupiter.api.Assertions;
משמשת:
assertThrows()
תלותי בדיקות תלותי בדיקות מאפשרים בדיקה מסודרת על ידי מתן האפשרות לשיטות הבדיקה להיות תלויות זו בזו. זה אומר שהשיטה הבדיקה הבאה, שתלויה בשיטת הבדיקה הקודמת, לא תופעל עד שהקודמת עוברת. זהו תכונה מועילה בעת כתיבת בדיקות אינטגרציה. @TestInstance
ניטרול בדיקות מנטרל בדיקות או מחלקות בדיקה. @Disabled
פסקי זמן מכשיל בדיקה אם זמן הביצוע שלה חורג מזמן מסוים. @Timeout
דוחות מספק דיווח מובנה לניתוח תוצאות הבדיקה ומציג מידע מפורט. יוצר קובץ .html עם תוצאות ביצוע הבדיקות. לא רלוונטי

JUnit 4 נגד JUnit 5

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

criteria JUNIT4 JUNIT5
ארכיטקטורה הכל היה מארוז ביחד בקובץ JAR אחד. Divided into 3 sub-projects:
– JUnit Platform
– JUnit Jupiter
– JUnit Vintage
JDK Version Requirement זקוק ל-Java 5 או גרסה גבוהה יותר זקוק ל-Java 8 או גרסה גבוהה יותר
שילוב צד שלישי אין תמיכה בשילוב שלישי לתוספים וסביבות פיתוח משולבות תת-פרוייקט מיועד (JUnit Platform) לשילובים של צד שלישי
תמיכה בבדיקות מקוננות אין הערכת תגים לכתיבת בדיקות מקוננות מספק הערכת @Nested לכתיבת בדיקות מקוננות
תמיכה בהרשמת הרחבות מותאמות אישית אין תמיכה בהרחבות מותאמות אישית מספק הערכת @ExtendWith להרשמת הרחבות מותאמות אישית
שינויים בהערכות הנפוצות @BeforeClass
@AfterClass
@Before
@After
@Ignore
@BeforeAll
@AfterAll
@BeforeEach
@AfterEach
@Disabled
שינויים בהערכות להעברת תגים וסינון השתמש בהערכת @Category השתמש בהערכת @Tag
איחודי בדיקות השתמש בהערכות @RunWith ו-@Suite @סוויט, @בחרחבילות, ו- @בחרמחלקות הן האנוטציות שמשמשות

התחלה עם JUnit 5

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

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

הוספת תלותי JUnit בפרויקט Maven

התלות הבאות של JUnit 5 צריכות להיתווסף בקובץ pom.xml:

  • מנוע JUnit Jupiter
  • API JUnit Jupiter
  • סוויטת הפלטפורמה של JUnit
  • פרמטרים של JUnit Jupiter
XML

 

זהו הקובץ המלא של pom.xml

XML

 

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

אנוטציות בסיסיות המשמשות ב-JUnit 5

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

@BeforeAll אנוטציה

האינדיקציה @BeforeAll מציינת כי השיטה שמסומנת צריכה להתבצע לפני כל שיטת @Test, @RepeatedTest, @ParameterizedTest, או @TestFactory במחלקה הנוכחית. עליה להיות שיטה סטטית במחלקת המבחן.

@BeforeAll משמש כהחלפה להערכת @BeforeClass המשמשת ב-JUnit 4.x

תחביר:

Java

 

ההערה @BeforeEach

ההערה @BeforeEach מציינת כי השיטה שמסומנת צריכה להתבצע לפני כל קריאה לשיטת @Test, @RepeatedTest, @ParameterizedTest, או @TestFactory במחלקה הנוכחית.

היא חלק משיטות מחזור החיים של הבדיקה ומחליפה את ההערה @Before המשמשת ב-JUnit 4.

תחביר:

Java

 

ההערה @AfterAll

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

ההערה @AfterAll היא ההחלפה של ההערה @AfterClass ב-JUnit 4.

תחביר:

Java

 

ההערה @AfterEach

ההערה @AfterEach מציינת כי השיטה שמסומנת צריכה להתבצע לאחר כל שיטת @Test, @RepeatedTest, @ParameterizedTest, או @TestFactory במחלקה הנוכחית.

זה משמש כהחלפה ל-JUnit 5 עבור ההערה @After המשמשת ב-JUnit 4.

תחביר:

Java

 

ההערה @Test

ההערה @Test מציינת כי השיטה שמסומנת היא שיטת בדיקה. השיטת בדיקה לא יכולה להיות פרטית או סטטית ולא להחזיר ערך.

תחביר:

Java

 

ההערה @DisplayName

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

תחביר:

Java

 

ההערה @Disabled

ההערה @Disabled ב-JUnit 5 משמשת לאילוץ של שיטת הבדיקה או מחלקת הבדיקה ממבנה הבדיקה לביצוע.

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

תחביר:

Java

 

כיצד לכתוב מבחני בדיקה אוטומטיים באמצעות JUnit 5

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

Java

 


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

בואו נוסיף שיטות במחלקת BasicTest כדי להדגים את שימוש באננוטציות @BeforeAll, @BeforeEach, @AfterAll, @AfterEach, @Test, @DisplayName ו-@Disabled הזמינות ב-JUnit 5.

Java

 

ראיון בקוד

האננוטציה @DisplayName מעל מחלקת הבדיקות תציג את שם הבדיקה כ- "Demo test class" בתוצאות כאשר הבדיקה מבוצעת.

השיטה beforeAllTest() תופעל לפני ריצת כל אחת מהבדיקות ותדפיס את הטקסט "Before All method Called!!". לאחר מכן, השיטה beforeEachTest() תופעלת לפני כל בדיקה ותדפיס את הטקסט "Before Each Method called!!".

יש שלוש שיטות בדיקה במחלקה זו, בשמות testMethodOne(), testMethodTwo() ו-disabledTest(). כל שלושת השיטות בדיקה מכילות את האננוטציה @Test annotation שמציינת שמדובר בשיטות בדיקה.

השיטה disabledTest() לא תופעל מכיוון שיש לה את האננוטציה @Disabled מעליה.

לאחר שהרצת הבדיקה הושלמה, השיטה afterEachTestMethod() תופעלה מכיוון שיש לה את האננוטציה @AfterEach מעליה.

לבסוף, לאחר ריצת כל הבדיקות, השיטה afterAllMethod() תופעל מכיוון שיש לה את האננוטציה @AfterAll מעליה.

בדיקת ביצוע

ניתן להריץ את הבדיקות על ידי לחיצה ימנית על מחלקת הבדיקה ובחירת הרצה 'שם מחלקת הבדיקה'("BasicTest" במקרה שלנו).

דרך אחרת היא ללחוץ על סמל הנגן בצבע ירוק ליד ההכרזה על מחלקת הבדיקה, כפי שמוצג בתמונת המסך למטה:



תמונת המסך הבאה מתוך IntelliJ IDE מראה כי הבדיקות הופעלו בהצלחה.

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

כל שאר שיטות הבדיקה, כולל beforetest ו- aftertest, הופעלו בהצלחה, והתוצאות המתאימות הודפסו בקונסולה.

סיכום

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

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

שמח בבדיקה!

Source:
https://dzone.com/articles/beginners-guide-to-junit-5