הכללת בדיקות יחידה ובדיקות פונקציונליות

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

  • איפה מוסיפים את הכיתות החדשות של בדיקות היחידה
  • הפעלת בדיקות יחידה ב-Eclipse ומחוץ לסביבת הפיתוח המשולבת (IDE) של Eclipse
  • איפה מוסיפים בדיקות פונקציונליות
  • הרצת הבדיקות הפונקציונליות
  • הרצת חלק מהאימות המקדים של TF באופן מקומי

הוספת בדיקות יחידה

בפרויקט הקוד הפתוח של Android‏ (AOSP), מוסיפים את הכיתה של בדיקות היחידה בקטע: tools/tradefederation/core/tests/src/com/android/tradefed/UnitTests.java

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

הרצת בדיקות יחידה

כל בדיקות היחידה והבדיקות הפונקציונליות של AOSP עבור Trade Federation נמצאות בפרויקט tools/tradefederation/core/tests.

ב-Eclipse, כדי להריץ בדיקת יחידה ספציפית, פשוט לוחצים לחיצה ימנית על הבדיקה ובוחרים באפשרות Run As > JUnit. כדי להריץ את כל בדיקות היחידה, מריצים את החבילה com.android.tradefed.UnitTests.

אפשר גם להפעיל את בדיקת היחידה משורת הפקודה בעץ המקור של Tradefed אחרי ה-build, באופן הבא: tools/tradefederation/core/javatests/run_tradefed_tests.sh

אפשר להריץ בדיקות יחידה בנפרד, אבל צריך להריץ בדיקות פונקציונליות באמצעות Trade Federation עצמו. לצורך כך נדרש מכשיר Android. כל הבדיקות הפונקציונליות צריכות לפעול בהתאם למוסכמת השמות *FuncTest.

בדיקת התוצאות של בדיקות היחידה

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

בסיכום הסופי של התוצאות יופיע אם הייתה כשל או לא.

דוגמה לסיכום סופי במסוף:

12:55:02 ========== Result Summary ==========
Results summary for test-tag 'TFUnitTests': 3355 Tests [3355 Passed]

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

הוספת בדיקות פונקציונליות

  • אם הבדיקה הפונקציונלית כוללת מכשיר (משתמשת ב-API כלשהו של ITestDevice), הגדרת הסוויטה נמצאת בקובץ com.android.tradefed.DeviceFuncTests. אחרת, הגדרת המארז נמצאת ב-com.android.tradefed.FuncTests.

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

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

הרצת בדיקות פונקציונליות

כדי להריץ בדיקה פונקציונלית מ-Eclipse:

  1. מוודאים שמכשיר מחובר למארח וש-adb ואם צריך גם fastboot נמצאים ב-PATH של Eclipse. הדרך הקלה ביותר לעשות זאת היא להפעיל את Eclipse מתוך הגדרת מעטפת עם נתיב ה-PATH המתאים.
  2. יוצרים אפליקציית Java. מריצים את ההגדרות באמצעות Run > Run configurations.
  3. מגדירים את הפרויקט כ-tradefed-tests ואת הכיתה הראשית כ-com.android.tradefed.command.CommandRunner.
  4. מריצים את m tradefed-all.
  5. בכרטיסייה Arguments (ארגומנטים), מזינים את הארגומנטים הבאים בשורת הפקודה: host --class <full path of test class to run>
  6. לוחצים על הפעלה.

כדי להריץ בדיקות פונקציונליות מחוץ ל-Eclipse.

  1. Build Trade Federation.
  2. מחברים מכשיר Android למארח.
  3. הפעלה של tools/tradefederation/core/javatests/run_tradefed_func_tests.sh
  4. אפשר גם לבחור את המכשיר על ידי הוספת --serial <serial no> כפי שהוא מופיע בפלט של adb devices.

הרצת בדיקות לפני שליחת שינויים ב-TF לשינויים מקומיים

אם רוצים להריץ את הבדיקה באופן דומה לבדיקה של TF לפני שליחת בקשת תיקון, משתמשים באפשרות הבאה:

tools/tradefederation/core/javatests/run_tradefed_aosp_presubmit.sh

הפעולה הזו תפעיל את כל הבדיקות של TF לפני שליחת הקוד (presubmit) ב-TF שנוצר באופן מקומי, כדי לעזור לכם לוודא שהשינוי לא גורם לכשל בבדיקות.

בדיקות TF לפני שליחה הן קבוצה גדולה יותר של בדיקות היחידה שצוינו למעלה, אבל זמן הריצה שלהן ארוך יותר. לכן מומלץ להריץ את בדיקות היחידות במהלך הפיתוח כדי לבצע אימות מהיר יותר, ולהריץ את בדיקות ה-presubmit לפני העלאת ה-CL.