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

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

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

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

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

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

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

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

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

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