מבחני מכשור

קרא תחילה בדוק את האפליקציה שלך ב-Developer.android.com. שימו לב שיש כמה הבדלים באופן השימוש במבחני מכשור בבדיקות פלטפורמה.

לסיכום, בדיקת מכשור מספקת סביבת ביצוע בדיקה מיוחדת כפי שהושקה באמצעות פקודת am instrument , שבה תהליך היישום הממוקד מופעל מחדש ומאוחל בהקשר היישום הבסיסי, ומתחיל שרשור מכשור בתוך תהליך היישום VM. קוד הבדיקה שלך מתחיל בביצוע בשרשור המכשור הזה ומסופק עם מופע Instrumentation המספק גישה להקשר היישום ולממשקי API כדי לתפעל את תהליך היישום הנבדק.

מושגי מפתח

  • יש להצהיר על מכשור בחבילת יישום, כאשר תג <instrumentation> מקונן מתחת לתג <manifest> של מניפסט חבילת היישום.
  • מניפסט של חבילת יישום עשוי מבחינה טכנית להכיל תגיות <instrumentation> מרובות, אם כי הוא אינו נפוץ בדרך זו.
  • כל <instrumentation> חייב להכיל:
    • תכונה android:name : זה צריך להיות השם של תת-מחלקה של Instrumentation שנכלל ביישום הבדיקה, שהוא בדרך כלל רץ הבדיקה שבו נעשה שימוש, למשל: android.support.test.runner.AndroidJUnitRunner
    • יש להגדיר תכונה android:targetPackage . הערך שלו צריך להיות מוגדר לחבילת היישום הנבדקת.

סיכום שלבים

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

    frameworks/base/core/tests/coretests
    frameworks/base/services/tests/servicestests
    

    אם אתה מוסיף מודול מכשור חדש לגמרי עבור הרכיב שלך, ראה

  2. בהתאם למוסכמה הקיימת אם אתה מוסיף בדיקות לאחד מהמיקומים שלמעלה. אם אתה מגדיר מודול בדיקה חדש, אנא עקוב אחר ההגדרה של AndroidManifest.xml ו- Android.mk באחד מהמיקומים שלמעלה

  3. ראה frameworks/base/core/tests/coretests/ לדוגמא. שים לב שבשורות אלה מתקינים אפליקציות נוספות:

    <option name="test-file-name" value="FrameworksCoreTests.apk" />
    <option name="test-file-name" value="BstatsTestApp.apk" />
    
  4. אל תשכח לסמן את המבחן שלך כ- @SmallTest , @MediumTest או @LargeTest

  5. בנו את מודול הבדיקה עם m, למשל:

    m FrameworksCoreTests
    
  6. הפעל את הבדיקות:

    m tradefed-all
    tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
    
  7. אם אינך משתמש ב-Tradefed, התקן והפעל באופן ידני את הבדיקות:

    1. התקן את ה-apk שנוצר:
    adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
    

    טיפ: אתה משתמש במכשור של adb shell pm list instrumentation כדי למצוא את המכשור בתוך ה-apk שהותקן זה עתה

    1. הפעל את הבדיקות עם אפשרויות שונות:

      1. כל הבדיקות ב-apk

        adb shell am instrument -w com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      2. כל הבדיקות תחת חבילת Java ספציפית

        adb shell am instrument -w -e package android.animation \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      3. כל המבחנים בכיתה ספציפית

        adb shell am instrument -w -e class \
          android.animation.AnimatorSetEventsTest \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      4. שיטת בדיקה ספציפית

        adb shell am instrument -w -e class \
          android.animation.AnimatorSetEventsTest#testCancel \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        

המבחן שלך יכול להצהיר מפורש על מעבר או נכשל באמצעות ממשקי API של JUnit ; בנוסף, כל חריג שלא נתפס יגרום גם לכשל תפקודי.

כדי לפלוט מדדי ביצועים, קוד הבדיקה שלך יכול להתקשר ל- Instrumentation#sendStatus כדי לשלוח רשימה של צמדי מפתח-ערך. חשוב לציין ש:

  1. מדדים יכולים להיות מספר שלם או נקודה צפה
  2. כל ערכים לא מספריים יימחקו
  3. ה-APK של הבדיקה שלך יכול להיות בדיקות פונקציונליות או בדיקות מדדים, אולם ערבוב של שניהם אינו נתמך כרגע