תיוג וסינון מבחני JUnit

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

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

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

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

2. תגיות JUnit 5

2.1. הערת מבחני JUnit עם תָג

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

@Test @Tag ("IntegrationTest") מבט הריק הציבוריAddEmployeeUsingSimpelJdbcInsert () {} @Test @Tag ("UnitTest") חלל ציבורי givenNumberOfEmployeeWhenCountEmployeeThenCountMatch () {}

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

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

2.2. סינון תגים עם Suite Suite

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

@RunWith (JUnitPlatform.class) @SelectPackages ("com.baeldung.tags") @IncludeTags ("UnitTest") עובד ציבור בכיתה DAOUnitTestSuite {}

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

2.3. סינון תגים עם תוסף Maven Surefire

לצורך סינון מבחני JUnit בשלבים השונים של בניית Maven, אנו יכולים להשתמש בתוסף Maven Surefire. תוסף Surefire מאפשר לנו לכלול או לא לכלול את התגים בתצורת התוסף:

 תוסף maven-surefire-2.20.1 UnitTest 

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

מבחן האינטגרציה

2.4. סינון תגים עם IDE

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

IntelliJ מאפשרת סינון כזה באמצעות תצורת הפעלה / איתור באגים מותאמת אישית:

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

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

באופן דומה, Eclipse מאפשר גם לכלול או לא לכלול תגים בתצורות JUnit Run / Debug:

3. קטגוריות JUnit 4

3.1. סיווג מבחני JUnit

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

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

ממשק ציבורי UnitTest {}

ו מבחן האינטגרציה:

ממשק ציבורי IntegrationTest {}

כעת, אנו יכולים לסווג את ה- JUnit שלנו על ידי הערה עליו קטגוריה ביאור:

@Test @Category (IntegrationTest.class) מבחן הריק הציבוריAddEmployeeUsingSimpelJdbcInsert () {} @Test @Category (UnitTest.class) public void givenNumberOfEmployeeWhenCountEmployeeThenCountMatch () {}

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

3.2. קטגוריות רָץ

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

@RunWith (Categories.class) @IncludeCategory (UnitTest.class) @SuiteClasses (EmployeeDAOCategoryIntegrationTest.class) שכבה ציבורית עובדDAOUnitTestSuite {}

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

@RunWith (Categories.class) @ExcludeCategory (IntegrationTest.class) @SuiteClasses (EmployeeDAOCategoryIntegrationTest.class) שכבה ציבורית עובדDAOUnitTestSuite {}

3.3. לא כולל או כולל קטגוריות במייבן

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

נשתמש בתוסף Maven Surefire לשם כך:

 maven-surefire-plugin 2.20.1 com.baeldung.categories.UnitTest 

ובאופן דומה אנו יכולים לכלול קטגוריה מבניית Maven:

 maven-surefire-plugin 2.20.1 com.baeldung.categories.IntegrationTest 

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

4. סינון מבחני JUnit עם תוסף Maven Surefire

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

כעת נשתמש בתוסף Maven Surefire לצורך ביצוע בדיקות היחידה או מבחני האינטגרציה:

 תוסף maven-surefire 2.20.1 ** / * IntegrationTest.java 

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

יתר על כן, אנו יכולים לבצע את בטוח תוסף בתוך פרופילי Maven שונים עם אי הכללות או הכללות שונות.

למרות ש בטוח עובד היטב לסינון, מומלץ להשתמש בתוסף Failsafe לביצוע מבחני אינטגרציה ב- Maven.

5. מסקנה

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

דנו גם בכמה ממנגנוני הסינון לפני JUnit 5.

כל הדוגמאות זמינות ב- Github.


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