בדיקת שילוב עם תוסף Maven Cargo

צורך נפוץ מאוד במחזור החיים של פרויקט הוא הגדרת בדיקות אינטגרציה. למרבה המזל, ל- Maven יש תמיכה מובנית בתרחיש מדויק זה, עם השלבים הבאים של מחזור חיי הבנייה המוגדר כברירת מחדל (מתיעוד Maven):

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

ראשית, התוסף maven-surefire מוגדר כך מבחני שילוב אינם נכללים ממחזור החיים הסטנדרטי של הבנייה:

 org.apache.maven.plugins maven-surefire-plugin 2.17 ** / * IntegrationTest.java 

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

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

 org.codehaus.cargo מטען-maven2-תוסף 1.4.8 jetty8x מוטבע 8080 

מוגדר שרת אינטרנט מוטבע של Jetty 8, שמאזין ביציאה 8080.

בגרסת המטען החדשה יותר (1.1.0 ומעלה), ערך ברירת המחדל של ה לַחֲכוֹת דֶגֶל השתנה ל שֶׁקֶר, ל מטען: התחל. יש להשתמש במטרה זו רק להפעלת מבחני אינטגרציה והיא קשורה למחזור החיים של Maven; לפיתוח, מטען: לרוץ יש לבצע את המטרה במקום - שיש לה חכה = נכון.

על מנת שה- חֲבִילָה שלב maven כדי ליצור פריסה מִלחָמָה הקובץ, על אריזת הפרויקט להיות: מִלחָמָה.

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

  שילוב   ... 

פרופיל זה יכיל את כל התצורה שנותרה.

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

 org.codehaus.cargo מטען-maven2-תוסף שרת התחלה שקר טרום שילוב-מבחן התחל עצור-שרת לאחר שילוב-מבחן עצור 

זה מבטיח את מטען: התחל מטרה ו מטען: עצור יעדים יבוצעו לפני ואחרי ה מבחן האינטגרציה שלב. שימו לב כי בגלל שיש שני אינדיבידואלים ביצוע הגדרות, ה תְעוּדַת זֶהוּת אלמנט חייב להיות נוכח (ושונה) בשניהם, כך שמייבן יוכל לקבל את התצורה.

הַבָּא, תוסף maven-surefire יש לבטל את התצורה בתוך ה- שילוב פרופיל, כך שמבחני האינטגרציה שלא נכללו במחזור החיים המוגדר כברירת מחדל יהיו כעת כלול ורוץ:

  org.apache.maven.plugins maven-surefire-plugin שילוב-מבחן מבחן אף ** / * IntegrationTest.java 

יש כמה דברים שכדאי לשים לב אליהם:

1. ה מִבְחָן המטרה של תוסף maven-surefire מבוצע ב מבחן האינטגרציה שלב; בשלב זה, Jetty כבר התחיל עם הפרויקט שנפרס, כך שמבחני האינטגרציה צריכים להופיע ללא בעיות.

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

3. שים לב, מכיוון שיש רק יחיד אלמנט, יש אין צורך ב- תְעוּדַת זֶהוּת להיות מוגדר.

כעת התהליך כולו יכול לפעול:

mvn נקי להתקין - שילוב

סיכום

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

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

לקבלת תצורה ריצה מלאה של מנגנון זה, עיין בפרויקט REST GitHub.

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


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