קרא תחילה בדוק את האפליקציה שלך ב-Developer.android.com. שימו לב שיש כמה הבדלים באופן השימוש במבחני מכשור בבדיקות פלטפורמה.
לסיכום, בדיקת מכשור מספקת סביבת ביצוע בדיקה מיוחדת כפי שהושקה באמצעות פקודת am instrument
, שבה תהליך היישום הממוקד מופעל מחדש ומאוחל בהקשר היישום הבסיסי, ומתחיל שרשור מכשור בתוך תהליך היישום VM. קוד הבדיקה שלך מתחיל בביצוע בשרשור המכשור הזה ומסופק עם מופע Instrumentation
המספק גישה להקשר היישום ולממשקי API כדי לתפעל את תהליך היישום הנבדק.
מושגי מפתח
- יש להצהיר על מכשור בחבילת יישום, כאשר תג
<instrumentation>
מקונן מתחת לתג<manifest>
של מניפסט חבילת היישום. - מניפסט של חבילת יישום עשוי מבחינה טכנית להכיל תגיות
<instrumentation>
מרובות, אם כי הוא אינו נפוץ בדרך זו. - כל
<instrumentation>
חייב להכיל:- תכונה
android:name
: זה צריך להיות השם של תת-מחלקה שלInstrumentation
שנכלל ביישום הבדיקה, שהוא בדרך כלל רץ הבדיקה שבו נעשה שימוש, למשל:android.support.test.runner.AndroidJUnitRunner
- יש להגדיר תכונה
android:targetPackage
. הערך שלו צריך להיות מוגדר לחבילת היישום הנבדקת.
- תכונה
סיכום שלבים
להלן יעדים נפוצים לבדיקות הרמטיות מול שירותי מסגרת:
frameworks/base/core/tests/coretests frameworks/base/services/tests/servicestests
אם אתה מוסיף מודול מכשור חדש לגמרי עבור הרכיב שלך, ראה
בהתאם למוסכמה הקיימת אם אתה מוסיף בדיקות לאחד מהמיקומים שלמעלה. אם אתה מגדיר מודול בדיקה חדש, אנא עקוב אחר ההגדרה של
AndroidManifest.xml
ו-Android.mk
באחד מהמיקומים שלמעלהראה frameworks/base/core/tests/coretests/ לדוגמא. שימו לב, שורות אלה מתקינות אפליקציות נוספות:
<option name="test-file-name" value="FrameworksCoreTests.apk" /> <option name="test-file-name" value="BstatsTestApp.apk" />
אל תשכח לסמן את המבחן שלך כ-
@SmallTest
,@MediumTest
או@LargeTest
בנה את מודול הבדיקה עם m, למשל:
m FrameworksCoreTests
הפעל את הבדיקות:
הפתרון הפשוט ביותר הוא להשתמש ב- Atest כך:
atest FrameworksCoreTests
לחלופין, לבדיקות מורכבות יותר, השתמש ברתמת הבדיקה של הפדרציה המסחרית :
m tradefed-all tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
אם אינך משתמש ב-Tradefed, התקן והפעל באופן ידני את הבדיקות:
- התקן את ה- apk שנוצר:
adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
הפעל את הבדיקות עם אפשרויות שונות:
כל הבדיקות ב-apk
adb shell am instrument -w com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
כל הבדיקות תחת חבילת Java ספציפית
adb shell am instrument -w -e package android.animation \ com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
כל המבחנים בכיתה ספציפית
adb shell am instrument -w -e class \ android.animation.AnimatorSetEventsTest \ com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
שיטת בדיקה ספציפית
adb shell am instrument -w -e class \ android.animation.AnimatorSetEventsTest#testCancel \ com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
המבחן שלך יכול להצהיר מפורש על מעבר או נכשל באמצעות ממשקי API של JUnit
; בנוסף, כל חריג שלא נתפס יגרום גם לכשל תפקודי.
כדי לפלוט מדדי ביצועים, קוד הבדיקה שלך יכול להתקשר ל- Instrumentation#sendStatus
כדי לשלוח רשימה של צמדי מפתח-ערך. חשוב לציין ש:
- מדדים יכולים להיות מספר שלם או נקודה צפה
- כל ערכים לא מספריים יימחקו
- ה-APK של הבדיקה שלך יכול להיות בדיקות פונקציונליות או בדיקות מדדים, אולם ערבוב של שניהם אינו נתמך כרגע