אספרסו רב-תהליכים

ככל שהאפליקציה שלכם תגדל, כדאי שתציבו חלק מרכיבי האפליקציה בתהליך שונה מהתהליך הראשי של האפליקציה שלכם. כדי לבדוק רכיבי אפליקציה תהליכים שאינם מוגדרים כברירת מחדל, אפשר להשתמש בפונקציונליות של אספרסו מרובה תהליכים. הכלי הזה, שזמין ב-Android 8.0 (רמת API 26) ואילך, מאפשר לבדוק בצורה חלקה את האינטראקציות עם ממשק המשתמש של האפליקציה שחוצות את התהליכים של האפליקציה את הגבולות תוך שמירה על האחריות לסנכרון של Espresso.

כשמשתמשים ב-MultiProcess Espresso, צריך לשמור על ניהול הגרסאות וההיקף הבאים את השיקולים הבאים:

  • האפליקציה צריכה לטרגט ל-Android 8.0 (רמת API 26) ואילך.
  • הכלי יכול לבדוק רק רכיבי אפליקציה שכללת בתהליכים בתוך את חבילת האפליקציה שלכם. היא לא יכולה לבדוק תהליכים חיצוניים.

שימוש בכלי

כדי לבדוק תהליך בתוך האפליקציה באמצעות 'אספרסו מרובה תהליכים', צריך להוסיף הפניה אל ארטיפקט espresso-remote בקובץ build.gradle של האפליקציה:

app/build.gradle

Groovy

dependencies {
    ...
    androidTestImplementation 'androidx.test.espresso:espresso-remote:3.6.1'
}

Kotlin

dependencies {
    ...
    androidTestImplementation('androidx.test.espresso:espresso-remote:3.6.1')
}

כמו כן, צריך להוסיף את הפרטים הבאים למניפסט androidTest של האפליקציה:

  • רכיב <instrumentation> שמגדיר את התהליך.
  • רכיב <meta-data> שמציין שאתם רוצים להשתמש ב-MultiProcess Espresso.

בקטע הקוד הבא מוסבר איך להוסיף את הרכיבים האלה:

src/androidTest/AndroidManifest.xml

<manifest ... package="androidx.test.mytestapp.tests">
  <uses-sdk android:targetSdkVersion="27" android:minSdkVersion="14" />
  <instrumentation
    android:name="androidx.test.runner.AndroidJUnitRunner"
    android:targetPackage="androidx.test.mytestapp"
    android:targetProcesses="*">
    <meta-data
      android:name="remoteMethod"
      android:value="androidx.test.espresso.remote.EspressoRemote#remoteInit" />
  </instrumentation>
</manifest>

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

<instrumentation
    ...
    android:targetProcesses=
            "androidx.test.mytestapp:myFirstAppProcessToTest,
             androidx.test.mytestapp:mySecondAppProcessToTest" ... />

להבין את הארכיטקטורה של הכלי

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

  1. Android Framework יוצר ומתחילה תהליך חדש בהתאם להנחיות של האפליקציה מבנה הניווט. כל תהליך Instrumentation כולל מופע חדש של AndroidJUnitRunner. בשלב הזה, שני תהליכי ההגדרה לא יכולים לתקשר עם אחר.
  2. כל אחד AndroidJUnitRunner רושמת את Espresso כמסגרת הבדיקה שלה.
  3. שני המופעים של AndroidJUnitRunner לבצע לחיצת יד כדי ליצור חיבור זה לזה. זהה בכל פעם AndroidJUnitRunner המכונה מחברת את כל הלקוחות הרשומים כמו Espresso עם מקבילים בתהליכים אחרים, כדי שהלקוחות האלה יוכלו ליצור ערוץ תקשורת ביניהם.
  4. כל AndroidJUnitRunner המכונה ממשיכה לחפש מופעי אינסטרומנטציה שנוספו לאחרונה לקוחות חדשים וליצור ערוצי תקשורת נוספים לפי הצורך.

איור 1 ממחיש את התוצאה של התהליך הזה:

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

מקורות מידע נוספים

כדי לקבל מידע נוסף בנושא, אפשר להיעזר במקורות המידע הבאים.