הפלאגין של Android Gradle יכול ליצור דוחות על רמת הכיסוי של הקוד, שעוקבים אחרי אחוז הקוד שהבדיקות מכסות. בדף הזה מוסבר איך להפעיל דיווח על כיסוי וליצור דוחות.
אפשר ליצור דוחות כיסוי לכל סוג בדיקה (יחידה ואינסטרומנטציה) לכל וריאנט. אפשר גם ליצור דוחות כיסוי מאוחדים בסוגי בדיקות, מודולים ווריאנטים שונים של build.
הפעלת רמת הכיסוי של הקוד
כדי להפעיל את רמת הכיסוי של הקוד, צריך להגדיר את enableAndroidTestCoverage ואת enableUnitTestCoverage לערך true בקובצי ה-build ברמת המודול לכל וריאנט שרוצים לקבל עבורו דוחות כיסוי:
Kotlin
android { // ... buildTypes { debug { // Enable coverage for unit tests enableUnitTestCoverage = true // Enable coverage for instrumentation tests enableAndroidTestCoverage = true } } }
מגניב
android { // ... buildTypes { debug { // Enable coverage for unit tests enableUnitTestCoverage true // Enable coverage for instrumentation tests enableAndroidTestCoverage true } } }
שינוי הגרסה של Jacoco (אופציונלי)
AGP מפעיל את Jacoco באופן אוטומטי כשמפעילים את הכיסוי במודולים. עם זאת, אם אתם צריכים להשתמש בגרסה ספציפית של Jacoco, אתם יכולים לציין אותה בקובץ ה-build ברמת המודול:
Kotlin
android { testCoverage { jacocoVersion = "JACOCO_VERSION" } }
מגניב
android { testCoverage { jacocoVersion = 'JACOCO_VERSION' } }
יצירת דוחות כיסוי ספציפיים לווריאנטים
כדי ליצור דוחות כיסוי רק לבדיקות יחידה או רק לבדיקות אינסטרומנטציה לווריאנט ספציפי, צריך להריץ את המשימות המתאימות.
| סוג הבדיקה | פקודה | דיווח על מיקום |
|---|---|---|
| בדיקות יחידה (unit testing) | ./gradlew :module-name:createVariantNameUnitTestCoverageReport |
path-to-your-project/module-name/build/reports/coverage/test/variant/index.html |
| בדיקות אינסטרומנטציה | ./gradlew :module-name:createVariantNameAndroidTestCoverageReport |
path-to-your-project/module-name/build/reports/coverage/androidTest/variant/connected/index.html |
יצירת דוחות מאוחדים של רמת הכיסוי של הקוד
אפשר ליצור דוחות מאוחדים של רמת הכיסוי של הקוד באמצעות המשימות testAllSuites ו-testAllSuitesWithDependencies ב-Gradle. המשימות האלה ייצרו דוח HTML אחד שמאחד את נתוני הכיסוי מסוגי בדיקות שונים (יחידה ואינסטרומנטציה), מודולים ווריאנט build. כך תוכלו לראות בלוח בקרה אחד את רמת הכיסוי של הקוד בפרויקט.
דרישות מוקדמות
- פלאגין של Android Gradle בגרסה 9.5.0-alpha05 ואילך
- הפעלת רמת הכיסוי של הקוד
כדי ליצור דוח מאוחד, מריצים את אחת מהמשימות הבאות משורת הפקודה:
| היקף הכיסוי | פקודה | תיאור | דיווח על מיקום |
|---|---|---|---|
| המודול הנוכחי | ./gradlew :module-name:testAllSuites --continue |
הפקודה הזו מריצה את כל חבילות המקרים לבדיקה ויוצרת דוח כיסוי מאוחד למודול הנוכחי, שמשלב נתונים מכל סוגי הבדיקות. | path-to-your-project/module-name/build/reports/testAllSuites/coverage-report/ |
| המודול הנוכחי ויחסי התלות | ./gradlew :module-name:testAllSuitesWithDependencies --continue |
בודק את כל חבילות המקרים לבדיקה ויוצר דוח כיסוי מאוחד למודול הנוכחי ולכל יחסי התלות שלו. המשימה הזו זמינה למודולים של אפליקציות ולמודולים של ספריות שהפרסום שלהן מופעל. | path-to-your-project/module-name/build/reports/testAllSuitesWithDependencies/coverage-report/ |
בדף הנחיתה של דוח ה-HTML שנוצר מוצג סיכום כללי של כל המודולים. אפשר להרחיב את התצוגה ממודול לחבילה, מחבילה למחלקה וממחלקה לקובץ המקור. לוחצים על קובץ כלשהו כדי לראות את הקוד עם הדגשה של כיסוי השורות וההסתעפויות:
- ירוק: שורות קוד שנבדקו.
- אדום: שורות שלא נכללות בכיסוי.
- צהוב: כיסוי חלקי (חלק מההוראות או מההסתעפויות לא נבדקו).
שימוש ברמת הכיסוי של הקוד במכשיר לבדיקות אינסטרומנטציה
כברירת מחדל, AGP מודד את הכיסוי של בדיקות אינסטרומנטציה על ידי הוספת אינסטרומנטציה למחלקות של האפליקציה באמצעות JaCoCo כשהוא יוצר את האפליקציה. החל מגרסה 9.6.0-alpha01 של AGP, אתם יכולים להשתמש במקום זאת באינסטרומנטציה במכשיר, שמוסיפים אינסטרומנטציה למחלקות של האפליקציה במכשיר הבדיקה בזמן שבדיקות פועלות. מידע נוסף זמין במאמר הצגת דוחות של רמת הכיסוי של הקוד (עם סוכן במכשיר).