הפעל או התעלם מבדיקות מותנה ב- JUnit 4

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

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

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

במדריך קצר זה, אנו הולכים להסתכל כיצד אנו יכולים להריץ או להתעלם מבדיקות ב- JUnit 4 בתנאי לְהַנִיחַ מעמד.

2. ה לְהַנִיחַ מעמד

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

דבר חשוב לציין הוא ההתנהגות שתיארנו עבור לְהַנִיחַ class הוא בלעדי לרץ JUnit המוגדר כברירת מחדל. אצל רצים מותאמים אישית, הדברים עשויים להיות שונים.

לבסוף, באותו אופן כמו עם לִטעוֹן, אנחנו יכולים לקרוא לְהַנִיחַ שיטות או ב @לפני אוֹ @לפני השיעור שיטות ביאור או בתוך @מִבְחָן השיטה עצמה.

בואו נעבור על השיטות השימושיות ביותר של לְהַנִיחַ בכיתה על ידי הצגת כמה דוגמאות. לכל הדוגמאות הבאות, נניח getOsName () החזרות לינוקס.

2.1. באמצעות נניח ש

ה נניח ש() השיטה בודקת שהמדינה - במקרה זה, getOsName () - עומד בתנאי המשחק שהועבר ב:

@Test ציבורי בטל כאשר AssumeThatAndOSIsLinux_thenRunTest () {assetThat (getOsName (), הוא ("לינוקס")); assertEquals ("run", "RUN" .toLowerCase ()); }

בדוגמה זו, בדקנו האם getOsName () שווה ל לינוקס. כפי ש getOsName () החזרות לינוקס, המבחן יופעל. שים לב, אנו משתמשים בשיטת ההתאמה של Hamcrest הוא (T) בתור השדכן כאן.

2.2. באמצעות להניח נכון

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

פרטי בוליאני isExpectedOS (מחרוזת osName) {להחזיר "Linux" .equals (osName); } @Test ציבורי בטל כאשר AssumeTrueAndOSIsLinux_thenRunTest () {assetTrue (isExpectedOS (getOsName ())); assertEquals ("run", "RUN" .toLowerCase ()); } 

במקרה הזה, isExpectedOs () החזרות נָכוֹן. לָכֵן, ההתנאים להתקיימות הבדיקה התקיימו והמבחן יופעל.

2.3. באמצעות נניח שקר

לבסוף, נוכל להשתמש בהפך מניח שקר () שיטה כדי לציין ביטוי בוליאני שחייב להעריך עד שֶׁקֶר על מנת שהבדיקה תפעל. אם זה מעריך ל נָכוֹן, המבחן יתעלם:

@ מבחן פומבי בטל כאשר AssumeFalseAndOSIsLinux_thenIgnore () {assetFalse (isExpectedOS (getOsName ())); assertEquals ("run", "RUN" .toLowerCase ()); }

במקרה זה, כמו isExpectedOs () גַם החזרות נָכוֹן,ההתנאים להפעלת הבדיקה לא התקיימו, והבדיקה תתעלם.

2.4. באמצעות נניח לא אפס

כשאנחנו רוצים להתעלם ממבחן אם ביטוי כלשהו הוא ריק, אנחנו יכולים להשתמש ב- מניח NotNull () שיטה:

@ מבחן ציבורי בטל כאשר AssumeNotNullAndNotNullOSVersion_thenRun () {assetNotNull (getOsName ()); assertEquals ("run", "RUN" .toLowerCase ()); }

כפי ש getOsName () מחזיר ערך שאינו null, התנאי להפעלת הבדיקה התקיים והמבחן יופעל.

2.5. באמצעות להניח NoException

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

@Test הציבור בטל כאשר AssumeNoExceptionAndExceptionTrowne_thenIgnore () {assertEquals ("הכל בסדר", "הכל בסדר" .toLowerCase ()); מחרוזת t = null; נסה את {t.charAt (0); } לתפוס (NullPointerException npe) {מניח NoException (npe); } assertEquals ("run", "RUN" .toLowerCase ()); }

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

3. היכן עלינו לשים את נניח XXX שִׂיחָה?

חשוב לציין זאת ההתנהגות של נניח XXX שיטות תלויות היכן אנו מכניסים אותן למבחנים שלנו.

בואו ונשתנה מעט את שלנו נניח ש דוגמה כך assertEquals () השיחה הולכת ראשונה. בנוסף, בואו נכין את assertEquals () לְהִכָּשֵׁל:

@ מבחן ציבורי בטל כאשר AssumeFalseAndOSIsLinux_thenIgnore () {assertEquals ("run", "RUN"); להניח False (isExpectedOS (getOsName ())); } 

כאשר אנו מריצים דוגמה זו, יהיה לנו:

org.junit.ComparisonFailure: צפוי: הפעל בפועל: RUN

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

4. מסקנה

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

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


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