יכול להיות שבחלק ממודולי הבדיקה יהיה צורך בשלבי הגדרה וביטול מותאמים אישית שלא ניתן לבצע בתוך תרחיש הבדיקה עצמו. דוגמאות טיפוסיות:
- התקנה של קובצי APK אחרים (בנוסף לקובץ ה-APK של הבדיקה)
- דחיפת קבצים למכשיר
- להריץ פקודות (למשל adb shell pm ...)
בעבר, צוותי רכיבים נאלצו בדרך כלל לכתוב בדיקה בצד המארח כדי לבצע משימות כאלה, מה שדרש הבנה של Trade Federation harness ובדרך כלל הגדיל את המורכבות של מודול בדיקה .
בהשראת CTS, הצגנו את הרעיון של הגדרת מודול בדיקה כדי לתמוך במשימות כאלה. אפשר לבצע את המשימות הנפוצות שמופיעות למעלה באמצעות כמה שורות הגדרה בלבד. כדי להשיג גמישות מקסימלית, אפשר גם להטמיע כלי משלכם להכנת היעד, כפי שמוגדר על ידי ITargetPreparer או ITargetCleaner, ולהגדיר אותם לשימוש בהגדרות של מודול הבדיקה שלכם.
קובץ ההגדרות של מודול בדיקה הוא קובץ XML שחובה להוסיף לתיקיית המקור של המודול ברמה העליונה, והוא נקרא AndroidTest.xml. קובץ ה-XML הוא בפורמט של קובץ הגדרות שמשמש את כלי האוטומציה של בדיקות Trade Federation. נכון לעכשיו, התגים העיקריים שמטופלים באמצעות ההגדרות של מודול הבדיקה הם התגים target_preparer ו-test.
מכיני מסמכים לטירגוט
תג target_preparer, כפי שהשם מרמז, מגדיר target preparer (ראו ITargetPreparer) שמציע שיטת הגדרה, שמופעלת לפני שמודול הבדיקה מופעל לבדיקה. אם המחלקה שאליה יש הפניה בתג target_preparer מטמיעה גם את ITargetCleaner, שיטת הניקוי שלה תופעל אחרי שמודול הבדיקה יסיים את הפעולה.
כדי להשתמש בהגדרת מודול משותף מובנית, מוסיפים קובץ חדש בשם AndroidTest.xml לתיקייה ברמה העליונה של מודול הבדיקה, וממלאים אותו בתוכן הבא:
<?xml version="1.0" encoding="utf-8"?>
<!-- [insert standard AOSP copyright here] -->
<configuration description="Test module config for Foo">
<!-- insert options here -->
</configuration>
לדוגמה, אפשר להוסיף את תגי האפשרויות הבאים (בתגובת ה-insert שלמעלה):
<target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
<option name="run-command" value="settings put secure accessibility_enabled 1" />
<option name="teardown-command" value="settings put secure accessibility_enabled 0" />
</target_preparer>
האפשרויות יגדירו את כלי הבדיקה כך:
- לפני שמפעילים את מודול הבדיקה, מריצים במכשיר את פקודת ה-Shell “settings put secure accessibility_enabled 1”
- אחרי שמסיימים את מודול הבדיקה, מריצים את פקודת ה-Shell “settings put secure accessibility_enabled 0”
בדוגמה הזו, הנגישות מופעלת או מושבתת לפני או אחרי ההרצה של מודול הבדיקה, בהתאמה. כדי להבין איך משתמשים בתג option, צריך להסביר את זה יותר לעומק. כפי שמוצג למעלה, לתג יכולים להיות שני מאפיינים: name ו-value. ערך המאפיין name צריך להיות אחד מהערכים שהמכין מציע.
המטרה המדויקת של שדה הערך תלויה בהגדרה של האפשרות על ידי יוצר הטופס: היא יכולה להיות מחרוזת, מספר, ערך בוליאני או אפילו נתיב קובץ. סיכום של שלושת המכינים הנפוצים של היעדים:
שם המחלקה: PushFilePreparer
- short name: push-file
- function: pushes arbitrary files under test case folder into destination on device
- הערות:
- הכלי הזה יכול להעביר מתיקייה לתיקייה או מקובץ לקובץ. כלומר, אי אפשר להעביר קובץ לתיקייה במכשיר: צריך לציין גם את שם קובץ היעד בתיקייה הזו.
- options:
- push-file: מפרט push, שמציין את הקובץ המקומי ואת הנתיב שאליו הוא צריך להידחף במכשיר. יכול להיות שיוצגו שוב. אם מוגדרים כמה קבצים להעברה לאותו נתיב מרוחק, הקובץ האחרון יועבר.
- push: (deprecated) מפרט של push, בפורמט '
/path/to/srcfile.txt->/path/to/destfile.txt' או '/path/to/srcfile.txt->/path/to/destdir/'. אפשר לחזור על הארגומנט הזה. הנתיב יכול להיות יחסי לספרייה של מודול הבדיקה או לספריית out עצמה. - post-push: פקודה להרצה במכשיר (עם
adb shell <your command>) אחרי שכל הניסיונות לשליחת הודעות פוש בוצעו. תרחיש שימוש טיפוסי הוא שימוש בפקודה chmod להגדרת הרשאות
שם הכיתה: InstallApkSetup
- שם מקוצר:install-apk
- function: pushes arbitrary apk files under into destination on device
- options:
- test-file-name: שם קובץ ה-APK שיועתק למכשיר.
- install-arg: ארגומנטים נוספים להעברה לפקודה pm install, כולל מקף מוביל, למשל “-d". יכול להיות שהתזכורת תחזור על עצמה
שם המחלקה: RunCommandTargetPreparer
- שם מקוצר: run-command
- function: מריץ פקודות שרירותיות של מעטפת לפני או אחרי ההרצה של מודול הבדיקה
- options:
- run-command:פקודת adb shell להרצה. יכול להיות שהתזכורת תחזור על עצמה
- teardown-command: פקודת adb shell להרצה במהלך שלב הפירוק. יכול להיות שהתזכורת תחזור על עצמה
כיתת בדיקה
כיתת בדיקה היא הכיתה של Trade Federation שמשמשת להרצת הבדיקה.
<test class="com.android.tradefed.testtype.AndroidJUnitTest">
<option name="package" value="android.test.example.helloworld"/>
<option name="runner" value="android.support.test.runner.AndroidJUnitRunner"/>
</test>
אלה שלוש דוגמאות נפוצות למחלקות בדיקה:
שם הכיתה: GTest
- short name: gtest
- function: בדיקה שמריצה חבילת בדיקה מקורית במכשיר נתון.
- options:
- native-test-device-path:הנתיב במכשיר שבו נמצאות בדיקות מקוריות.
שם הכיתה: InstrumentationTest
- short name: instrumentation
- פונקציה: בדיקה שמריצה חבילת בדיקות אינסטרומנטציה במכשיר נתון
- options:
- package: שם החבילה של אפליקציית הבדיקה ל-Android שרוצים להפעיל.
- class: השם של מחלקת הבדיקה להרצה.
- method: שם שיטת הבדיקה להרצה.
שם הכיתה: AndroidJUnitTest
- function: בדיקה שמריצה חבילת בדיקות של אינסטרומנטציה במכשיר נתון באמצעות android.support.test.runner.AndroidJUnitRunner. זו הדרך העיקרית להריץ בדיקת אינסטרומנטציה.