תצורת build פשוטה

לכל מודול בדיקה חדש חייב להיות קובץ תצורה כדי לכוון את מערכת ה-build עם מטא-נתונים של המודול, יחסי תלות בזמן הידור והוראות אריזה. עכשיו Android משתמש במערכת ה-build של Soong, להגדרות האישיות לבדיקה.

ב-Songg משתמשים ב-Bluprint או בקובצי .bp, שהם הצהרות פשוטות דמויי JSON תיאורים של מודולים לבנייה. הפורמט הזה מחליף את המודל שמבוסס על יצרן שהיו בשימוש בגרסאות קודמות. לקובצי העזר של Soong בלוח הבקרה של אינטגרציה רציפה (CI) תוכלו למצוא פרטים מלאים.

כדי לאפשר בדיקה מותאמת אישית, או להשתמש חבילת בדיקת התאימות של Android (CTS), מעקב הגדרות אישיות של בדיקה מורכבת במקום זאת.

דוגמה

הערכים שבהמשך מגיעים מקובץ התצורה לדוגמה של תוכנית העיצוב: /platform_testing/tests/example/instrumentation/Android.bp

לנוחותכם, מצורפת כאן תמונת מצב:

android_test {
    name: "HelloWorldTests",
    srcs: ["src/**/*.java"],
    sdk_version: "current",
    static_libs: ["androidx.test.runner"],
    certificate: "platform",
    test_suites: ["device-tests"],
}

חשוב לשים לב שההצהרה android_test שמופיעה בהתחלה מציינת שמדובר בבדיקה. לעומת זאת, הוספה של android_app תציין שמדובר ב-build חבילה.

הגדרות

ההגדרות הבאות מספקות הסבר:

    name: "HelloWorldTests",

ההגדרה name נדרשת כשמציינים את סוג המודול android_test (בתחילת החסימה). הוא נותן שם למודול, שם ה-APK יהיה זהה עם סיומת .apk, למשל במקרה הזה, כתוצאה מכך, ה-APK של הבדיקה נקרא HelloWorldTests.apk. בנוסף, מגדיר שם יעד למודול, כדי שתוכלו להשתמש ב-make [options] <HelloWorldTests> כדי לבנות את מודול הבדיקה ואת כל יחסי התלות שלו.

    static_libs: ["androidx.test.runner"],

ההגדרה static_libs מורה למערכת ה-build לשלב את התוכן של המודולים בעלי השם לתוך ה-APK שמתקבל של המודול הנוכחי. המשמעות היא צפוי שכל מודול בעל שם יפיק קובץ .jar, והתוכן שלו משמש לפתרון הפניות classpath במהלך זמן הידור (compile), וגם משולב ב-APK שמתקבל.

המודול androidx.test.runner בנוי מראש ל-AndroidX Test Runner ספרייה, שכוללת את סשן הבדיקה AndroidJUnitRunner. פלטפורמת AndroidJUnitRunner תומכת ב-framework של בדיקת JUnit4 והוחלף InstrumentationTestRunner ב-Android 10. עוד פרטים מידע על בדיקת אפליקציות ל-Android במאמר בדיקת אפליקציות ב-Android.

אם אתם בונים מודול מדידה חדש, תמיד צריך להתחיל ב- את הספרייה androidx.test.runner בתור הרצת הבדיקה. עץ המקור של הפלטפורמה כולל גם מסגרות בדיקה שימושיות אחרות, כמו ub-uiautomator, mockito-target, easymock ועוד.

    certificate: "platform",

ההגדרה certificate מורה למערכת ה-build לחתום על ה-APK באמצעות אותה כתובת כפלטפורמה המרכזית. הפעולה הזו נדרשת אם הבדיקה שלך משתמשת בחתימה בהרשאה מוגנת או ב-API. חשוב לשים לב: ההגדרה הזו מתאימה לנתונים ברציפות בפלטפורמה. אבל לא להיות בשימוש במודולים של בדיקות CTS. שימו לב שהדוגמה הזו משתמש בהגדרת האישור הזו רק לצורך ההמחשה: קוד הבדיקה. מהדוגמה לא נדרשת חתימה על ה-APK של הבדיקה אישור מיוחד לפלטפורמה.

אם אתם כותבים כלי נגינה עבור הרכיב שלכם שנמצא מחוץ ל- שרת מערכת, כלומר, הוא ארוז פחות או יותר כמו APK רגיל של אפליקציה, מלבד העובדה שהיא מובנית בתמונת המערכת ועשויה להיות אפליקציה בעלת הרשאות, סביר להניח הם שההגדרות שלכם יטרגטו את חבילת האפליקציה (פרטים בהמשך) של הרכיב שלך. במקרה הזה, הבקשה ל-makefile יש הגדרת certificate משלו, והאינסטרומנטציה שלך של המודול צריך להישאר ללא שינוי. הסיבה לכך היא שטירגוט התיוג באפליקציה בבדיקה, ה-APK וה-APK של האפליקציה חייבים להיות חתומים בעלי אותו אישור.

במקרים אחרים, אתם לא צריכים את ההגדרה הזו בכלל: מערכת ה-build תחתום עליו באמצעות אישור מובנה בברירת מחדל, בהתבסס על ובדרך כלל נקרא dev-keys.

    test_suites: ["device-tests"],

בעזרת ההגדרה test_suites, העסק יכול למצוא את הבדיקה בקלות רתמות הבדיקה של Federation. אפשר להוסיף כאן סוויטות אחרות, כמו CTS, כדי עשויה לשתף את הבדיקה.

${ANDROID_PRODUCT_OUT}/testcases/HelloWorldTests/HelloWorldTests.apk

הגדרות אופציונליות

הסבר על ההגדרות האופציונליות הבאות:

    test_config: "path/to/hello_world_test.xml"

ההגדרה test_config מנחה את מערכת ה-build שיעד הבדיקה שלך צריך . כברירת מחדל, AndroidTest.xml ליד Android.bp הוא שמשויך להגדרה.

    auto_gen_config: true

ההגדרה auto_gen_config מציינת אם ליצור את הגדרת הבדיקה או לא באופן אוטומטי. אם השדה AndroidTest.xml לא קיים ליד Android.bp, אין צורך להגדיר את המאפיין כ-TRUE באופן מפורש.

    require_root: true

ההגדרה require_root מורה למערכת ה-build להוסיף את RootTargetPreparer להגדרת הבדיקה שנוצרה אוטומטית. הפעולה הזו מבטיחה שהבדיקה תרוץ עם הרמה הבסיסית (root) הרשאות.

    test_min_api_level: 29

ההגדרה test_min_api_level מורה למערכת ה-build להוסיף MinApiLevelModuleController להגדרת הבדיקה שנוצרה באופן אוטומטי. בזמן עסקה האיחוד מריץ את הגדרת הבדיקה, המערכת תדלג על הבדיקה אם מאפיין המכשיר מתוך ro.product.first_api_level < test_min_api_level.