במסמך הזה נסביר איך להריץ בדיקות ישירות משורת הפקודה. הזה מבוסס על ההנחה שאתם כבר יודעים איך ליצור אפליקציה ל-Android לכתוב בדיקות לאפליקציה. לקבלת מידע נוסף על בניית בדיקות עבור תוכלו להיעזר במאמר בדיקת אפליקציות ב-Android.
כשבונים את האפליקציה באמצעות מערכת ה-build של Gradle, התכונה Android Gradle הפלאגין מאפשר להריץ בדיקות מ-Gradle את הפרויקט באמצעות שורת הפקודה. לשליטה פרטנית יותר, אפשר להריץ את הבדיקות דרך גשר לניפוי באגים ב-Android (adb). הדבר יכול להיות שימושי כאשר מריצים בדיקות אינטגרציה רציפה (CI).
ללמוד איך להריץ בדיקות אינסטרומנטטיביות אוטומטיות משורת הפקודה באמצעות במכשירים הווירטואליים ש-Gradle מנהל בשבילך, כדאי לקרוא את המאמר התאמת הבדיקות באמצעות Gradle מכשירים מנוהלים.
הרצת בדיקות באמצעות Gradle
הפלאגין Android Gradle מאפשר לך להריץ בדיקות מפרויקט Gradle באמצעות בשורת הפקודה.
הטבלה הבאה מסכמת את האופן שבו מריצים בדיקות באמצעות Gradle:
סוג של בדיקת יחידה | הפקודה להרצה | מיקום תוצאת הבדיקה |
---|---|---|
בדיקת יחידה מקומית |
מריצים את המשימה test :
|
קובצי תוצאות בדיקת HTML:path_to_your_project/module_name/build/reports/tests/
קובצי תוצאות בדיקת XML: |
בדיקת יחידה אינסטרומנטלית |
מריצים את המשימה connectedAndroidTest :
|
קובצי תוצאות בדיקת HTML:path_to_your_project/module_name/build/reports/androidTests/connected/
קובצי תוצאות בדיקת XML: |
תמיכה ב-Gradle
לקיצורים של שמות המשימות.
לדוגמה, כדי להתחיל את המשימה connectedAndroidTest
,
הזנת הפקודה הבאה:
./gradlew cAT
אפשר גם להריץ את משימות Gradle check
ו-connectedCheck
. האלה
להריץ את הבדיקות המקומיות או האינסטרומנטליות, בהתאמה,
כוללים בדיקות אחרות שנוספו על ידי יישומי פלאגין אחרים של Gradle.
הרצת בדיקות במודול
המשימות test
ו-connectedAndroidTest
מריצים בדיקות על כל מודול
פרויקט. כדי להריץ בדיקות במודול ספציפי,
הוספת קידומת למשימה test
או connectedAndroidTest
עם שם המודול ו
נקודתיים (:). לדוגמה, הפקודה הבאה מפעילה בדיקות אינסטרומנטליות עבור
המודול mylibrary
:
./gradlew mylibrary:connectedAndroidTest
הרצת בדיקות על וריאנט build
המשימה test
ו-connectedAndroidTest
מריצה בדיקות על כל אחת מהן
ליצור וריאנט בפרויקט. אפשר לטרגט
לווריאנט build ספציפי באמצעות התחביר הבא:
- לבדיקות יחידה מקומיות:
./gradlew testVariantNameUnitTest
- לבדיקות אינסטרומנטליות:
./gradlew connectedVariantNameAndroidTest
להריץ שיטות בדיקה או כיתות ספציפיות לבדיקה
כשמריצים בדיקות יחידה מקומיות, Gradle מאפשרת לך לטרגט בדיקות ספציפיות באמצעות
הדגל --tests
. לדוגמה, הפקודה הבאה מפעילה רק
sampleTestMethod
בדיקות לווריאנט ה-build שצוין. מידע נוסף על
באמצעות הדגל --tests
, קריאת התיעוד של Gradle על
סינון בדיקה.
./gradlew testVariantNameUnitTest --tests '*.sampleTestMethod'
הרצת בדיקות עם adb
כשמריצים בדיקות משורת הפקודה באמצעות Android Debug Bridge (adb), יש עוד אפשרויות והיא בוחרת את הבדיקות שמריצים מאשר בכל שיטה אחרת. אפשר לבחור קמפיינים ספציפיים שיטות בדיקה, סינון בדיקות לפי הערה מותאמת אישית או ציון בדיקות אפשרויות. מכיוון שהרצת הבדיקה נשלטת במלואה משורת הפקודה, יכולים להתאים אישית את הבדיקה עם סקריפטים של מעטפת בדרכים שונות.
כדי להריץ בדיקה משורת הפקודה, מריצים את adb shell
כדי להפעיל את שורת הפקודה
המעטפת במכשיר או באמולטור שלכם. בתוך המעטפת אפשר לבצע פעולות
מנהל פעילות
באמצעות הפקודה am
ולהשתמש בפקודת המשנה instrument
כדי להריץ את הבדיקות.
בתור קיצור דרך, ניתן להפעיל מעטפת adb, לקרוא ל-am instrument
,
סימונים של שורת פקודה, הכול בשורת קלט אחת. המעטפת נפתחת במכשיר או
אמולטור, מריץ את הבדיקות, מפיק פלט ולאחר מכן חוזר לשורת הפקודה
במחשב.
כדי להריץ בדיקה באמצעות am instrument
:
- פיתוח או יצירה מחדש של האפליקציה הראשית, חבילת בדיקה.
- מתקינים את חבילת הבדיקה ואת האפליקציה הראשית קובצי חבילת Android של האפליקציה (קובצי APK) למכשיר Android הנוכחי או אמולטור.
בשורת הפקודה, מזינים:
adb shell am instrument -w <test_package_name>/<runner_class>
כאשר
<test_package_name>
הוא שם החבילה ל-Android של הבדיקה ו-<runner_class>
הוא השם של מחלקת ההרצה במבחן של Android. שבהם השתמשת. שם החבילה של Android הוא הערך של רכיב המניפסט המאפיין package בקובץ המניפסט של חבילת הבדיקה (AndroidManifest.xml
).בדרך כלל, השיעור של הרצת הבדיקה של Android הוא
AndroidJUnitRunner
:adb shell am instrument -w com.android.example/androidx.test.runner.AndroidJUnitRunner
תוצאות הבדיקה שלך מופיעות בSTDOUT
.
דגלים של כלי נגינה
כדי למצוא רשימה של כל הדגלים שבהם צריך להשתמש בפקודה am instrument
:
להריץ את adb shell am help
. פירטנו כאן כמה מהסימונים החשובים
הטבלה הבאה:
סימון | ערך | תיאור |
---|---|---|
-w
|
(ללא) |
המערכת מאלצת את am instrument להמתין עד למדידה
מסתיים לפני שהוא מסיים את עצמו. כך נשמרת
היא פתוחה עד שהבדיקות יסתיימו. הסימון הזה נדרש כדי
לראות את תוצאות הבדיקות.
|
-r
|
(ללא) |
הפלט מוביל לפורמט גולמי. השתמשו בדגל הזה כשרוצים
לאסוף מדדי ביצועים כך שהפורמט שלהם לא
תוצאות הבדיקה. הדגל הזה מיועד לשימוש עם הדגל
-e perf true (מתועד ב:
am instrument options)
|
-e
|
<test_options>
|
מספקת אפשרויות בדיקה בתור צמדי מפתח-ערך.
הכלי am instrument מעביר את הפריטים האלה
סיווג אינסטרומנטציה באמצעות
onCreate()
. ניתן לציין כמה מופעים של
-e <test_options> המפתחות והערכים הם
שמתוארים
am instrument options אפשר
להשתמש רק בצמדי מפתח/ערך האלה
AndroidJUnitRunner
או באמצעות InstrumentationTestRunner
ואת מחלקות המשנה שלו. לשימוש בהם בכל כיתה אחרת אין השפעה.
|
--no-hidden-api-checks
|
(ללא) | ההגדרה משביתה את הגבלות השימוש בממשקי API מוסתרים. לקבלת מידע נוסף על ממשקי API נסתרים ואיך הם יכולים להשפיע אפליקציה, קריאה הגבלות על ממשקים שאינם SDK. |
אפשרויות כלי נגינה
הכלי am instrument
מעביר את אפשרויות הבדיקה אל
AndroidJUnitRunner
או InstrumentationTestRunner
בצורת צמדי מפתח-ערך, שמשתמשים בדגל -e
, עם התחביר הבא:
-e <key> <value>
חלק מהמפתחות מקבלים ערכים מרובים. אם מציינים כמה ערכים בקובץ ה-Cookie
רשימה מופרדת בפסיקים. לדוגמה, ההפעלה של
AndroidJUnitRunner
מספק כמה ערכים למפתח package
:
adb shell am instrument -w -e package com.android.test.package1,com.android.test.package2 \
> com.android.test/androidx.test.runner.AndroidJUnitRunner
הטבלה הבאה מפרטת את צמדי המפתח/ערך שבהם אפשר להשתמש עם מפעיל הבדיקה:
מפתח | ערך | תיאור |
---|---|---|
package
|
<Java_package_name>
|
שם החבילה המלאה של Java של אחד חבילות באפליקציה לבדיקה. כל מחלקה של מקרה בדיקה שמשתמשת בערך הזה שם החבילה מופעל. שימו לב שזוהי לא שם חבילה של Android; לחבילת בדיקה יש שם החבילה של Android, אבל יכולות להיות בו כמה חבילות Java. |
class |
<class_name> |
שם המחלקה המלאה ב-Java של אחד ממקרי הבדיקה הסוגים. רק המחלקה של תרחיש הניסיון הזו מבוצעת. |
<class_name>#method name |
שם מחלקה של מקרה בדיקה ואחת מהשיטות שלו. רק שה-method הזה מופעל. חשוב לשים לב לסימן הגיבוב (#) בין הכיתה ואת שם ה-method. | |
func |
true |
מריץ את כל כיתות המבחן
InstrumentationTestCase
|
unit |
true |
מריץ את כל כיתות הבדיקה שלא נמשכות
InstrumentationTestCase או
PerformanceTestCase
|
size |
[small | medium | large ]
|
מריצה שיטת בדיקה עם הערות לפי גודל. ההערות הן
@SmallTest , @MediumTest וגם
@LargeTest .
|
perf |
true |
מריץ את כל מחלקות הבדיקה שמטמיעות
PerformanceTestCase
כשמשתמשים באפשרות הזו, צריך לציין את הדגל -r עבור
am instrument כדי שהפלט יישמר בפורמט גולמי
ולא נשנה את הפורמט שלהן כתוצאות בדיקה.
|
debug |
true |
מריצה בדיקות במצב ניפוי באגים. |
log |
true |
טוענת ורושמת את כל הבדיקות שצוינו, אבל לא מריצה אותן. הבדיקה
מופיע מידע ב-STDOUT . שימוש בנתון הזה לאימות
שילובים של מסננים אחרים ומפרטי בדיקה.
|
emma |
true |
מפעיל ניתוח כיסוי של קוד EMMA וכותב את הפלט
/data/<app_package>/coverage.ec במכשיר. שפת תרגום
לשנות את מיקום הקובץ ולהשתמש במקש coverageFile
כפי שמתואר בערך הבא.
הערה: לאפשרות הזו נדרש אמצעי EMMA
של אפליקציית הבדיקה, שאפשר ליצור באמצעות
יעד אחד ( |
coverageFile |
<filename> |
ביטול של מיקום ברירת המחדל של קובץ הכיסוי של EMMA
במכשיר. יש לציין את הערך הזה כנתיב ושם קובץ בפורמט UNIX.
שם ברירת המחדל של הקובץ מתואר ברשומה של
מקש emma .
|
כשמשתמשים בדגל -e
, חשוב לשים לב לנקודות הבאות:
- הפעלה של
am instrument
onCreate(Bundle)
עםBundle
שמכיל את ערך המפתח זוגות של מילים. - המפתח
package
מקבל עדיפות על פני המפתחclass
. אם תציינו ולאחר מכן לציין בנפרד מחלקה בתוך החבילה, Android מריץ את כל הבדיקות בחבילה ומתעלמת ממפתח המחלקה. - המפתח
func
והמפתחunit
הם בלעדיים.
דוגמאות לשימוש
בקטעים הבאים מובאות דוגמאות לשימוש ב-am instrument
כדי להריץ בדיקות.
הם מבוססים על המבנה הבא:
- שם החבילה של חבילת הבדיקה ל-Android הוא
com.android.demo.app.tests
. - שתי שיעורי בדיקה לפי אינסטרומנטציה:
TestClass1
, שמכיל את שיטת הבדיקהtestMethod1
.TestClass2
, שמכיל את שיטות הבדיקהtestMethod2
ו-testMethod3
.
- משחק הבדיקה הוא
AndroidJUnitRunner
הרצת חבילת הבדיקה כולה
כדי להריץ את כל כיתות הבדיקה בחבילת הבחינה, מזינים:
adb shell am instrument -w com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner
הרצת כל הבדיקות במחלקה של מקרי בדיקה
כדי להריץ את כל הבדיקות בכיתה TestClass1
, צריך להזין:
adb shell am instrument -w \
> -e class com.android.demo.app.tests.TestClass1 \
> com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner
בחירת קבוצת משנה של בדיקות
כדי להריץ את כל הבדיקות במחלקה TestClass1
ובשיטה testMethod3
ב-TestClass2
,
מזינים:
adb shell am instrument -w \
> -e class com.android.demo.app.tests.TestClass1,com.android.demo.app.tests.TestClass2#testMethod3 \
> com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner
תרחישים נוספים לדוגמה זמינים
AndroidJUnitRunner
הפניית API.