ככל שהאפליקציה שלכם תגדל, כדאי שתציבו חלק מרכיבי האפליקציה בתהליך שונה מהתהליך הראשי של האפליקציה שלכם. כדי לבדוק רכיבי אפליקציה תהליכים שאינם מוגדרים כברירת מחדל, אפשר להשתמש בפונקציונליות של אספרסו מרובה תהליכים. הכלי הזה, שזמין ב-Android 8.0 (רמת API 26) ואילך, מאפשר לבדוק בצורה חלקה את האינטראקציות עם ממשק המשתמש של האפליקציה שחוצות את התהליכים של האפליקציה את הגבולות תוך שמירה על האחריות לסנכרון של Espresso.
כשמשתמשים ב-MultiProcess Espresso, צריך לשמור על ניהול הגרסאות וההיקף הבאים את השיקולים הבאים:
- האפליקציה צריכה לטרגט ל-Android 8.0 (רמת API 26) ואילך.
- הכלי יכול לבדוק רק רכיבי אפליקציה שכללת בתהליכים בתוך את חבילת האפליקציה שלכם. היא לא יכולה לבדוק תהליכים חיצוניים.
שימוש בכלי
כדי לבדוק תהליך בתוך האפליקציה באמצעות 'אספרסו מרובה תהליכים', צריך להוסיף הפניה
אל ארטיפקט espresso-remote בקובץ 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.
בקטע הקוד הבא מוסבר איך להוסיף את הרכיבים האלה:
<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:
- Android Framework יוצר ומתחילה תהליך חדש בהתאם להנחיות של האפליקציה
מבנה הניווט. כל תהליך
Instrumentation
כולל מופע חדש שלAndroidJUnitRunner
. בשלב הזה, שני תהליכי ההגדרה לא יכולים לתקשר עם אחר. - כל אחד
AndroidJUnitRunner
רושמת את Espresso כמסגרת הבדיקה שלה. - שני המופעים של
AndroidJUnitRunner
לבצע לחיצת יד כדי ליצור חיבור זה לזה. זהה בכל פעםAndroidJUnitRunner
המכונה מחברת את כל הלקוחות הרשומים כמו Espresso עם מקבילים בתהליכים אחרים, כדי שהלקוחות האלה יוכלו ליצור ערוץ תקשורת ביניהם. - כל
AndroidJUnitRunner
המכונה ממשיכה לחפש מופעי אינסטרומנטציה שנוספו לאחרונה לקוחות חדשים וליצור ערוצי תקשורת נוספים לפי הצורך.
איור 1 ממחיש את התוצאה של התהליך הזה:
מקורות מידע נוספים
כדי לקבל מידע נוסף בנושא, אפשר להיעזר במקורות המידע הבאים.
- פיתוח מבוסס-בדיקה ל-Android עם תמיכת הבדיקות של Android ספרייה סרטון של סשן מ-Google I/O 2017, שמתחיל בשעה 36:41.