תצורת בנייה פשוטה

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

סונג משתמשת Blueprint או .bp קבצים, אשר נמצאים JSON דמוי תיאורים הצהרתיים פשוט של מודולים לבנות. פורמט זה מחליף את המערכת מבוססת Make ששימשה במהדורות קודמות. עיין קבצי הפנית סונג על לוח מחווני האינטגרציה המתמשך לקבלת פרטים מלאים.

כדי להתאים בדיקות מותאמות אישית או להשתמש אנדרואיד Suite מבחן תאימות (CTS), פעל תצורת מבחן Complex במקום.

דוגמא

הסעיפים הבאים באים בקובץ התצורה Blueprint בדוגמה זו: /platform_testing/tests/example/instrumentation/Android.bp

תמונת מצב כלולה כאן לנוחות:

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

שים לב android_test ההכרזה בתחילה מציין שזהו מבחן. כולל android_app מנגד יצביע זה במקום חבילה לבנות.

הגדרות

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

    name: "HelloWorldTests",

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

    static_libs: ["android-support-test"],

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

בדוגמה זו דברים שעשויים להיות שימושיים באופן כללי לבדיקות:

android-support-test הוא prebuilt עבור ספריית תמיכת מבחן Android, הכוללת את רץ בדיקה החדשה AndroidJUnitRunner : החלף את מקום התופסת יום מובנה InstrumentationTestRunner , עם תמיכה במסגרת בדיקות JUnit4. קראו עוד על אפליקציות מבחן על אנדרואיד .

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

    certificate: "platform",

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

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

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

    test_suites: ["device-tests"],

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

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

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

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

    test_config: "path/to/hello_world_test.xml"

test_config ההגדרה יורה למערכת לבנות יעד הבדיקה שלך זקוק config ספציפי. כברירת מחדל, AndroidTest.xml ליד Android.bp קשורה config.

    auto_gen_config: true

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

    require_root: true

require_root הגדרה יורה למערכת לבנות להוסיף RootTargetPreparer אל config מבחן שנוצר באופן אוטומטי. זה מבטיח שהבדיקה תפעל עם הרשאות שורש.

    test_min_api_level: 29

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