רצי מבחן JUnit 4 בהתאמה אישית

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

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

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

2. הכנה

נתחיל בהוספת תקן JUnit תלות שלנו pom.xml:

 צומת צומת 4.12 

3. הטמעת רץ מותאם אישית

בדוגמה הבאה נראה כיצד לכתוב את המנהג שלנו רָץ - והפעל אותו באמצעות @לרוץ עם.

רץ JUnit הוא כיתה המרחיבה את התקציר של JUnit רָץ בכיתה והיא אחראית להפעלת בדיקות JUnit, בדרך כלל באמצעות השתקפות.

כאן אנו מיישמים שיטות מופשטות של רָץ מעמד:

Class class TestRunner מרחיב את Runner {Class Class testClass; TestRunner ציבורי (Class testClass) {super (); this.testClass = testClass; } @Override תיאור ציבורי getDescription () {return Description .createTestDescription (testClass, "תיאור הרץ שלי"); } @ עקוף ריצת חללים ציבורית (מודיע RunNotifier) ​​{System.out.println ("מריץ את הבדיקות מ- MyRunner:" + testClass); נסה את {Object testObject = testClass.newInstance (); עבור (שיטת שיטה: testClass.getMethods ()) {if (method.isAnnotationPresent (Test.class)) {notifier.fireTestStarted (תיאור .createTestDescription (testClass, method.getName ())); method.invoke (testObject); notifier.fireTestFinished (תיאור .createTestDescription (testClass, method.getName ())); }}} לתפוס (חריג e) {לזרוק RuntimeException (ה) חדש; }}}

ה getDescription השיטה עוברת בירושה ניתן לתאר ומחזירה א תיאור המכיל את המידע שיוצא מאוחר יותר ועשוי לשמש כלים שונים.

בתוך ה לָרוּץ אנו מיישמים את שיטות בדיקת היעד באמצעות השתקפות.

הגדרנו קונסטרוקטור שלוקח א מעמד טַעֲנָה; זו דרישת JUnit. בזמן הריצה, JUnit יעביר את כיתת מבחן היעד לבנאי זה.

RunNotifier משמש לירי אירועים שיש בהם מידע על התקדמות הבדיקה.

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

מחשבון מחלקה ציבורית {public int add (int a, int b) {return a + b; }} @RunWith (TestRunner.class) מחלקה ציבורית CalculatorTest {מחשבון מחשבון = מחשבון חדש (); @Test ציבורי בטל @Addition () {Syste.out.println ("ב- testAddition"); assertEquals ("תוספת", 8, calculator.add (5, 3)); }}

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

-------------------------------------------------- ----- בדיקות -------------------------------------------- ----------- ריצת com.baeldung.junit.CalculatorTest המריץ את הבדיקות מ- MyRunner: class com.baeldung.junit.CalculatorTest in testAddition בדיקות הריצה: 1, כישלונות: 0, שגיאות: 0, דילג על: 0, זמן שחלף: 0.002 שניות תוצאות: בדיקות: 1, כישלונות: 0, שגיאות: 0, דילג על: 0

4. רצים מתמחים

במקום להאריך את הרמה הנמוכה רָץ בכיתה, כפי שעשינו בדוגמה האחרונה, אנו יכולים להרחיב את אחת מתתי הסוגים המתמחים של רָץ: ParentRunner אוֹ BlockJUnit4Runner.

התקציר ParentRunner בכיתה מריצה את המבחנים בצורה היררכית.

BlockJUnit4Runner הוא מעמד קונקרטי ואם אנו מעדיפים להתאים אישית שיטות מסוימות, כנראה שנרחיב את המעמד הזה.

בואו נראה את זה עם דוגמה:

מחלקה ציבורית BlockingTestRunner מאריך BlockJUnit4ClassRunner {public BlockingTestRunner (Class klass) זורק InitializationError {super (klass); } @Override מוגן הצהרת methodInvoker (שיטת FrameworkMethod, מבחן אובייקט) {System.out.println ("invoking:" + method.getName ()); החזר super.methodInvoker (שיטה, מבחן); }}

הערת שיעור עם @RunWith (JUnit4.class) תמיד יפעיל את רץ ברירת המחדל של JUnit 4 בגרסה הנוכחית של JUnit; מחלקה זו מייחסת את רץ המחדל הנוכחי של JUnit 4:

@RunWith (JUnit4.class) מחלקה ציבורית CalculatorTest {מחשבון מחשבון = מחשבון חדש (); @Test מבטל הריק @Addition () {assertEquals ("תוספת", 8, calculator.add (5, 3)); }}

5. מסקנה

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

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

כמה יישומים פופולריים של צד שלישי של רצים לשימוש כוללים SpringJUnit4ClassRunner, MockitoJUnitRunner, HierarchicalContextRunner, רץ מלפפון ועוד הרבה.

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


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