מבוא לג'וקיטו

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

Jukito הוא הכוח המשולב של JUnit, Guice ו- Mockito - המשמש לפשט בדיקות של יישומים מרובים של אותו ממשק.

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

2. הגדרה

ראשית, נוסיף את התלות הבאה לפרויקט שלנו:

 מבחן org.jukito jukito 1.5 

אנו יכולים למצוא את הגרסה האחרונה ב- Maven Central.

3. יישומים שונים של ממשק

כדי להתחיל להבין את כוחו של ג'וקיטו, אנו נגדיר פשוט מַחשְׁבוֹן ממשק עם לְהוֹסִיף שיטה:

מחשבון ממשק ציבורי {הוסף כפול ציבורי (כפול א, כפול ב); }

ואנחנו הולכים ליישם את הממשק הבא:

המחלקה הציבורית מיישמת מחשבון SimpleCalculator {@ הוספה כפולה ציבורית של כפול (כפול a, כפול b) {החזר a + b; }}

אנו זקוקים גם ליישום נוסף:

מחלקה ציבורית ScientificCalculator מרחיב SimpleCalculator {}

עכשיו, בואו נשתמש ב- Jukito כדי לבדוק את שתי היישומים שלנו:

@RunWith (JukitoRunner.class) מחלקה ציבורית CalculatorTest {מודל מחלקה סטטית ציבורית מרחיב את JukitoModule {@Override הריק מוגן configureTest () {bindMany (Calculator.class, SimpleCalculator.class, ScientificCalculator.class); }} @Test public void givenTwoNumbers_WhenAdd_ThenSumBoth (@ All Calculator calc) {תוצאה כפולה = calc.add (1, 1); assertEquals (2, תוצאה, .1); }}

בדוגמה זו נוכל לראות א JukitoModule, המחברים את כל היישומים שצוינו.

ה @את כל ההערה לוקחת את כל הכריכות של אותו ממשק שנעשה על ידי JukitoModule ומריץ את המבחן עם כל היישומים השונים שהוזרקו בזמן הריצה.

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

ריצות מבחנים: 2, כישלונות: 0, שגיאות: 0, דילוג: 0

4. המוצר הקרטזיאני

בואו כעת נוסיף מחלקה מקוננת פשוטה לשילובי מבחנים שונים עבורנו לְהוֹסִיף שיטה:

מחלקה סטטית ציבורית AdditionTest {int a; int b; int צפוי; // קונסטרוקטורים / גטרים סטנדרטיים}

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

bindManyInstances (AdditionTest.class, AdditionTest חדש (1, 1, 2), AdditionTest חדש (10, 10, 20), AdditionTest חדש (18, 24, 42));

ולבסוף אנו מוסיפים מבחן נוסף לסוויטה שלנו:

@Test הציבור בטל givenTwoNumbers_WhenAdd_ThenSumBoth (@All מחשבון calc, @All AdditionTest addTest) {תוצאה כפולה = calc.add (addTest.a, addTest.b); assertEquals (addTest.expected, תוצאה, .1); }

עַכשָׁיו ה @את כל ההערה הולכת לייצר את התוצר הקרטזיאני של השילובים השונים בין היישומים השונים של ה- מַחשְׁבוֹן ממשק ו- AdditionTest מקרים.

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

ריצות מבחנים: 8, כישלונות: 0, שגיאות: 0, דילוג: 0

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

זמן הביצוע של כל הבדיקות יגדל ליניארי עם מספר הביצועים. i: ה: שיטת בדיקה עם שלושה פרמטרים עם @את כל ביאור וארבע כריכות לכל פרמטר יבוצעו 4 x 4 x 4 = 64 פעמים.

קיום חמש כריכות לאותה שיטת בדיקה יוביל ל 5 x 5 x 5 = 125 הוצאות להורג.

5. קיבוץ לפי שמות

המאפיין האחרון שנדון בו הוא קיבוץ לפי שם:

bindManyNamedInstances (Integer.class, "even", 2, 4, 6); bindManyNamedInstances (Integer.class, "מוזר", 1, 3, 5);

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

עכשיו בואו נוסיף עוד כמה בדיקות:

@Test הציבור בטל givenEvenNumbers_whenPrint_thenOutput (@All ("אפילו") שלם i) {System.out.println ("אפילו" + i); } @Test ציבורי בטל givenOddNumbers_whenPrint_thenOutput (@All ("מוזר") שלם i) {System.out.println ("מוזר" + i); }

הדוגמה לעיל תדפיס את ששת המיתרים "אפילו 2", "אפילו 4", "אפילו 6", "אי זוגי 1", "אי זוגי 3", "אי זוגי 5".

זכור כי סדר אלה אינו מובטח בזמן הריצה.

6. מסקנה

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

ניתן למצוא את הדוגמה המלאה ב- GitHub.


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