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

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

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

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

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

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

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

כל בדיקות היחידה והבדיקות הפונקציונליות של Trade Federation ב-AOSP נמצאות בפרויקט 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, הבדיקות של היחידות מפעילות את כל החלקים של ה-test harness, כולל כמה תנאי שגיאה. הפלט המפורט יודפס במסוף, כולל דוחות של קריסות.

בסיכום הסופי של התוצאות יצוין אם התרחש כשל.

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

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. לוחצים על Run.

כדי להריץ בדיקות פונקציונליות מחוץ ל-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.