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

JUnit 5 מאפשר לך ליצור בדיקות מקוננות באמצעות ההערה @Nested. במאמר זה תלמדו מהי ההערה @Nested וכיצד להשתמש בה.

מה זה מבחן מקונן?

ההערה @Nested של JUnit מסמנת שהמחלקה שהיא משייכת אליה היא מחלקה פנימית, שהיא חברה במחלקה אחרת. מבחן מקונן הוא מחלקת מבחן המכילה את ההערה @Nested, שכן המשמעות היא שיש מחלקה פנימית אחת (או יותר) בתוך מחלקת מבחן ברמה עליונה. מחלקה מקוננת יכולה להופיע בתוך מחלקה ברמה העליונה, או בתוך מחלקה שגם היא מקוננת.

יצירת כיתות Java לבדיקה

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

instagram viewer

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

פּוּמְבֵּימעמדצרכן{
מוּגָןint מספר לקוח;
מוּגָן מחרוזת customerName;
מוּגָן מחרוזת customerCode;

// בנאי ברירת מחדל
פּוּמְבֵּיצרכן(){
זֶה.customerId = 0;
זֶה.customerName = "";
זֶה.customerCode ="";
}

// בנאי ראשי
פּוּמְבֵּיצרכן(int customerId, String customerName, String customerCode){
זֶה.customerId = מזהה לקוחות;
זֶה.customerName = שם הלקוח;
זֶה.customerCode = customerCode;
}

// עותק בנאי
פּוּמְבֵּיצרכן(לקוח לקוח){
זֶה.customerId = customer.customerId;
זֶה.customerName = customer.customerName;
זֶה.customerCode = customer.customerCode;
}

// גטרים וקובעים
פּוּמְבֵּיintgetCustomerId(){
לַחֲזוֹר מספר לקוח;
}

פּוּמְבֵּיבָּטֵלsetCustomerId(int מספר לקוח){
זֶה.customerId = מזהה לקוחות;
}

פּוּמְבֵּי חוּט getCustomerName(){
לַחֲזוֹר שם לקוח;
}

פּוּמְבֵּיבָּטֵלsetCustomerName(מחרוזת customerName){
זֶה.customerName = שם הלקוח;
}

פּוּמְבֵּי חוּט getCustomerCode(){
לַחֲזוֹר קוד לקוח;
}

פּוּמְבֵּיבָּטֵלsetCustomerCode(מחרוזת קוד לקוח){
זֶה.customerCode = customerCode;
}

// לקבוע אחוז הנחה ללקוח על סמך סוג הלקוח
פּוּמְבֵּילְהַכפִּילסוג לקוח(מחרוזת קוד לקוח){
לְהַכפִּיל הנחה = 0;

אם (customerCode.toLowerCase().equals("pre")) {
הנחה = 0.10;
} אַחֵראם (customerCode.toLowerCase().equals("gen")) {
הנחה = 0.02;
} אַחֵראם (customerCode.toLowerCase().equals("חָדָשׁ")) {
הנחה = 0.05;
}

לַחֲזוֹר הנחה;
}

// קבע את סך הכל של לקוח על סמך סוג הלקוח
פּוּמְבֵּילְהַכפִּילסכום סופי(לְהַכפִּיל סה"כ){
לְהַכפִּיל discount = customerType (customerCode);
לְהַכפִּיל discountPercentage = סך * הנחה;
לְהַכפִּיל finalTotal = total - discountPercentage;
לַחֲזוֹר finalTotal;
}
}

מחלקה לקוח זו מכילה את כל הרכיבים של מחלקת Java, עם שתי שיטות.

יצירת מבחן מקונן עם JUnit 5

למחלקה Customer יש כמה בנאים, גטרים ו-seters, ושתי שיטות. ניתן ליצור מחלקה מקוננת (בתוך מחלקת הבדיקה Customer) שיוצרת אובייקט Customer חדש ובודקת את כל מרכיביו.

יְבוּאסטָטִיorg.junit.צדק.api.הצהרות.*;

יְבוּאorg.junit.צדק.api.הצג שם;
יְבוּאorg.junit.צדק.api.קינן;
יְבוּאorg.junit.צדק.api.מִבְחָן;

@DisplayName("שיעור מבחן לקוח מראה כיצד לִיצוֹרמקונן מבחנים.")
מעמדCustomerTest{
מוּגָןint זיהוי לקוח = 301;
מחרוזת מוגנת customerName = "מייק ווילסון";
מחרוזת מוגנת customerCode = "מִרֹאשׁ";
מוּגָןלְהַכפִּיל סך הכל = 600;

@קינן
@הצג שם("Customer Builder מקוננת כיתת מבחן בתוך כיתת מבחן ברמה עליונה")
מעמדCustomerBuilderTest{
לקוח לקוח = חָדָשׁ לקוח (CustomerId, customerName, customerCode);
לְהַכפִּיל grandTotal = customer.grandTotal (סה"כ);

@מִבְחָן
@הצג שם("בדיקת הלקוח's בוני כיתות, מגבירים וקובעים ושיטות.")
בָּטֵלcustomerBuilder(){
assertAll(() -> {
assertEquals(מספר לקוח, צרכן.getCustomerId());
assertEquals(שם לקוח, צרכן.getCustomerName());
assertEquals(קוד לקוח, צרכן.getCustomerCode());
assertEquals(0.10, צרכן.customerType(קוד לקוח));
assertEquals (540, grandTotal);
});
}
}
}

מחלקת CustomerTest היא מחלקת הבדיקה ברמה העליונה למחלקה מקוננת של CustomerBuilderTest. CustomerBuilderTest יוצר אובייקט Customer חדש ובודק את הרכיבים שלו באמצעות מבחני קביעה.

ביצוע מחלקת הבדיקה CustomerTest מניב את תוצאות הבדיקה המוצלחות הבאות:

שמות כיתות המבחן ושיטת המבחן הם תיאוריים ומקיפים, הודות ל- הערת @DisplayName.

לדעת כיצד לבדוק תוכנה הוא חיוני

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

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