התאמת אובייקטים של Hamcrest

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

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

במדריך מהיר זה, נצלול עמוק יותר להתאמת אובייקטים.

2. התקנה

כדי להשיג את המקרסט, אנחנו רק צריכים הוסף את התלות הבאה של Maven שלנו pom.xml:

 מבחן org.hamcrest java-hamcrest 2.0.0.0 

את הגרסה האחרונה של Hamcrest ניתן למצוא ב- Maven Central.

3. התאמת אובייקטים

התאמת אובייקטים נועדה לבצע בדיקות על מאפייני האובייקט.

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

האובייקט הראשון שלנו נקרא מקום ואין לו תכונות:

מיקום בכיתה ציבורית {}

נקרא את השעועית השנייה שלנו עִיר והוסף את היישום הבא אליו:

מחלקה ציבורית עיר מרחיבה מיקום {שם מחרוזת; מדינת מיתרים; // קונסטרוקטור סטנדרטי, גטרים וקובעים @Override public String toString () {if (this.name == null && this.state == null) {return null; } StringBuilder sb = StringBuilder חדש (); sb.append ("["); sb.append ("שם:"); sb.append (שם זה); sb.append (","); sb.append ("מדינה:"); sb.append (this.state); sb.append ("]"); החזר sb.toString (); }}

ציין זאת עִיר מרחיב מקום. נשתמש בזה בהמשך. עכשיו, בואו נתחיל עם התאמת האובייקטים!

3.1. hasToString

כמו שהשם אומר, ה hasToString שיטה מאמתת כי לאובייקט מסוים יש toString שיטה המחזירה ספציפית חוּט:

@ מבחן ציבורי בטל givenACity_whenHasToString_thenCorrect () {עיר עיר = עיר חדשה ("סן פרנסיסקו", "CA"); assertThat (עיר, hasToString ("[שם: סן פרנסיסקו, מדינה: CA)")); }

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

@ מבחן בטל פומבי בהתחשב ב- ACity_whenHasToStringEqualToIgnoringCase_thenCorrect () {עיר עיר = עיר חדשה ("סן פרנסיסקו", "CA"); assertThat (city, hasToString (equalToIgnoringCase ("[NAME: SAN FRANCISCO, STATE: CA]"))); }

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

@Test הציבור בטל givenACity_whenHasToStringEmptyOrNullString_thenCorrect () {עיר עיר = עיר חדשה (null, null); assertThat (עיר, hasToString (ריקOrNullString ())); }

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

3.2. סוג תואם עם

השידוך הזה מייצג הוא מערכת יחסים. הנה מגיע שלנו מקום קלאס-על למשחק:

@ מבחן חלל ציבורי givenACity_whenTypeCompatibleWithLocation_thenCorrect () {עיר עיר = עיר חדשה ("סן פרנסיסקו", "CA"); assertThat (city.getClass (), is (typeCompatibleWith (Location.class))); }

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

@ מבחן ציבורי בטל givenACity_whenTypeNotCompatibleWithString_thenCorrect () {עיר עיר = עיר חדשה ("סן פרנסיסקו", "CA"); assertThat (city.getClass (), is (not (typeCompatibleWith (String.class)))); }

כמובן, שלנו עִיר הכיתה אינה א חוּט.

לבסוף, שים לב שכל אובייקטים של Java צריכים לעבור את המבחן הבא:

@ מבחן חלל ציבורי givenACity_whenTypeCompatibleWithObject_thenCorrect () {עיר עיר = עיר חדשה ("סן פרנסיסקו", "CA"); assertThat (city.getClass (), is (typeCompatibleWith (Object.class))); }

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

4. מסקנה

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

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

כמו תמיד, תמצא את היישום המלא בפרויקט GitHub.


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