הפעלת בדיקות JUnit באופן תכנותי מיישום Java

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

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

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

2. תלות Maven

נצטרך כמה תלות בסיסית להפעלת בדיקות JUnit 4 ו- JUnit 5:

  org.junit.jupiter junit-jupiter-engine 5.2.0 test org.junit.platform junit-platform-launcher 1.2.0 // for JUnit 4 junit junit 4.12 test 

הגרסאות האחרונות של JUnit 4, JUnit 5 ו- JUnit Platform Launcher ניתן למצוא ב- Maven Central.

3. הפעלת בדיקות JUnit 4

3.1. תרחיש מבחן

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

מחלקה ציבורית FirstUnitTest {@Test ציבורי בטל כאשרThis_thenThat () {assertTrue (נכון); } @Test הציבור בטל כאשרSomething_thenSomething () {assertTrue (נכון); } @Test ציבורי בטל כאשרSomethingElse_thenSomethingElse () {assertTrue (נכון); }}
מחלקה ציבורית SecondUnitTest {@Test ציבורית בטל כאשרSomething_thenSomething () {assertTrue (נכון); } @Test הציבור בטל whensomethingElse_thenSomethingElse () {assertTrue (נכון); }}

כאשר אנו משתמשים ב- JUnit 4, אנו יוצרים כיתות בדיקה @מִבְחָן ביאור לכל שיטת בדיקה.

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

3.2. הפעלת כיתת מבחן יחידה

כדי להריץ בדיקות JUnit מקוד Java, נוכל להשתמש ב- JUnitCore כיתה (עם תוספת של TextListener class, המשמש להצגת הפלט ב System.out):

JUnitCore junit = JUnitCore חדש (); junit.addListener (TextListener חדש (System.out)); junit.run (FirstUnitTest.class);

במסוף נראה הודעה פשוטה מאוד המציינת מבחנים מוצלחים:

הפעלת כיתת מבחן אחת: .. זמן: 0.019 בסדר (2 מבחנים)

3.3. הפעלת שיעורי מבחן מרובים

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

JUnitCore junit = JUnitCore חדש (); junit.addListener (TextListener חדש (System.out)); תוצאת תוצאה = junit.run (FirstUnitTest.class, SecondUnitTest.class); resultReport (תוצאה);

שים לב שהתוצאה נשמרת במופע של JUnit תוֹצָאָה בכיתה, אותה אנו מדפיסים בשיטת כלי פשוט:

public static void resultReport (תוצאת תוצאה) {System.out.println ("סיים. תוצאה: כישלונות:" + result.getFailureCount () + ". התעלם:" + result.getIgnoreCount () + ". בדיקות שהופעלו:" + תוצאה .getRunCount () + ". זמן:" + result.getRunTime () + "ms."); } 

3.4. הפעלת חבילת מבחן

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

@RunWith (Suite.class) @ Suite.SuiteClasses ({FirstUnitTest.class, SecondUnitTest.class}) MyTestSuite הציבורי {}

כדי להריץ את הבדיקות, נשתמש שוב באותו קוד כמו קודם:

JUnitCore junit = JUnitCore חדש (); junit.addListener (חדש TextListener (System.out)); תוצאת התוצאה = junit.run (MyTestSuite.class); resultReport (תוצאה);

3.5. הפעלת בדיקות חוזרות

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

בדוגמה הבאה נפעיל את הבדיקות מ- MergeListsTest חמש פעמים:

מבחן מבחן = JUnit4TestAdapter חדש (FirstUnitTest.class); RepeatedTest repeatTest = חדש RepeatedTest (מבחן, 5); JUnitCore junit = JUnitCore חדש (); junit.addListener (TextListener חדש (System.out)); junit.run (repeatTest);

הנה, אנחנו משתמשים מתאם JUnit4Test כעטפת לשיעור המבחנים שלנו.

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

TestSuite mySuite = ActiveTestSuite חדש (); JUnitCore junit = JUnitCore חדש (); junit.addListener (חדש TextListener (System.out)); mySuite.addTest (חדש RepeatedTest (חדש JUnit4TestAdapter (FirstUnitTest.class), 5)); mySuite.addTest (חדש RepeatedTest (חדש JUnit4TestAdapter (SecondUnitTest.class), 3)); junit.run (mySuite);

4. הפעלת בדיקות JUnit 5

4.1. תרחיש מבחן

עם JUnit 5 נשתמש באותם שיעורי מבחן לדוגמא כמו בהדגמה הקודמת - FirstUnitTest ו SecondUnitTest, עם כמה הבדלים קלים עקב גרסה אחרת של מסגרת JUnit, כמו החבילה עבור @מִבְחָן ושיטות קביעה.

4.2. הפעלת כיתת מבחן יחידה

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

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

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

מחלקה ציבורית RunJUnit5TestsFromJava {המאזין סיכום GeneratingListener = סיכום חדש GeneratingListener (); public void runOne () {LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request () .selectors (selectClass (FirstUnitTest.class)) .build (); משגר משגר = LauncherFactory.create (); TestPlan testPlan = launcher.discover (בקשה); launcher.registerTestExecutionListeners (מאזין); launcher.execute (בקשה); } // שיטה עיקרית ...}

4.3. הפעלת שיעורי מבחן מרובים

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

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

public void runAll () {LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request () .selectors (selectPackage ("com.baeldung.junit5.runfromjava")) .filters (includeClassNamePatterns (". * Test")) .build (); משגר משגר = LauncherFactory.create (); TestPlan testPlan = launcher.discover (בקשה); launcher.registerTestExecutionListeners (מאזין); launcher.execute (בקשה); } 

4.4. פלט מבחן

בתוך ה רָאשִׁי() בשיטה, אנו קוראים לכיתה שלנו, ואנחנו משתמשים גם במאזין כדי לקבל את פרטי התוצאה. הפעם התוצאה נשמרת כ- TestExecutionSummary.

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

סטטי ציבורי ריק ריק (String [] args) {RunJUnit5TestsFromJava runner = RunJUnit5TestsFromJava חדש (); runner.runAll (); סיכום TestExecutionSummary = runner.listener.getSummary (); summary.printTo (PrintWriter חדש (System.out)); }

זה ייתן לנו את פרטי המבחן שלנו:

ריצת הבדיקה הסתיימה לאחר 177 אלפי שניות [7 מכולות נמצאו] [0 מכולות דילגו] [7 מכולות התחילו] [0 מכולות בוטלו] [7 מכולות הצליחו] [0 מכולות נכשלו] [10 בדיקות נמצאו] [0 בדיקות דילגו] [10 בדיקות התחילו ] [0 בדיקות בוטלו] [10 בדיקות הצליחו] [0 בדיקות נכשלו]

5. מסקנה

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

כמו תמיד, היישום של הדוגמאות המוצגות כאן זמין ב- GitHub הן עבור הדוגמאות של JUnit 5 והן עבור JUnit 4.


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