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

בקטע הזה מוסבר איך להריץ את הבדיקות של 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 מול TF שפותח באופן מקומי, כדי לעזור לכם לוודא שהשינוי לא גורם לשיבושים באף בדיקה.

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