מבוא לקוברטורה

1. סקירה כללית

במאמר זה נדגים כמה היבטים של הפקת דוחות כיסוי קוד באמצעות Cobertura.

במילים פשוטות, Cobertura הוא כלי דיווח המחשב את כיסוי הבדיקה עבור בסיס קוד - אחוז הענפים / הקווים אליהם ניגשים בדיקות היחידות בפרויקט Java.

2. תוסף Maven

2.1. תצורת Maven

כדי להתחיל בחישוב כיסוי הקוד בפרויקט Java שלך, עליך הכריז על התוסף של Cobertura Maven בתוכנת שלך pom.xml קוֹבֶץ תחת סעיף הדיווח:

   org.codehaus.mojo cobertura-maven-plugin 2.7 

תמיד תוכלו לבדוק את הגרסה האחרונה של התוסף במאגר המרכזי של Maven.

לאחר שתסיים, המשך והפעל את Maven תוך ציון קוברטורה: קוברטורה כמטרה.

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

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

לכל תנאי יש לך שני ענפים, כך שבעצם, בסופו של דבר יהיו לך פי שניים ענפים מאשר תנאים.

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

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

2.2. קביעת תצורה של חישוב ובדיקות כיסוי קוד

אתה יכול להתעלם / לא לכלול קבוצה מסוימת של שיעורים ממכשור קוד באמצעות ה- להתעלם וה לא לכלול תגיות:

 org.codehaus.mojo cobertura-maven-plugin 2.7 com / baeldung / algorithms / dijkstra / * com / baeldung / algorithms / dijkstra / * 

לאחר חישוב כיסוי הקוד מגיע ה- חשבון שלב. ה חשבון שלב מבטיח להגיע לרמה מסוימת של כיסוי קוד.

הנה דוגמה בסיסית כיצד להגדיר את התצורה של חשבון שלב:

  נכון 75 85 75 85 75 85 com.baeldung.algorithms.dijkstra. * 60 50 

בעת השימוש ב- haltOnFailure דגל, Cobertura יגרום לכישלון הבנייה אם אחד מהבדיקות שצוינו נכשל.

ה branchRate / lineRate התגים מציינים את ציון הכיסוי המינימלי של ענף / קו הנדרש לאחר מכשור קוד. ניתן להרחיב צ'קים אלה לרמת החבילה באמצעות packageLineRate / packageBranchRate תגים.

אפשר גם להכריז על בדיקות כללים ספציפיות עבור שיעורים עם שמות לפי דפוס ספציפי באמצעות regex תָג. בדוגמה שלמעלה אנו מבטיחים כי יש להגיע לציון כיסוי קו / סניף ספציפי לשיעורים ב com.baeldung.algorithms.dijkstra חבילה ומטה.

3. תוסף ליקוי חמה

3.1. הַתקָנָה

Cobertura זמין גם כתוסף Eclipse שנקרא eCobertura. על מנת להתקין eCobertura עבור Eclipse, עליך לבצע את השלבים הבאים ולהתקין את Eclipse גרסה 3.5 ומעלה:

שלב 1: מתפריט הליקוי בחר עֶזרָההתקן תוכנה חדשה. ואז, ב לעבוד עם השדה, הזן //ecobertura.johoop.de/update/:

שלב 2: בחר כיסוי קוד eCoberturaלחץ על "הבא" ולאחר מכן בצע את השלבים באשף ההתקנה.

עכשיו זה eCobertura מותקן, הפעל מחדש את Eclipse והראה את תצוגת מושב הכיסוי תחת חלונות → תצוגת תצוגה → אחר → קוברטורה.

3.2. באמצעות Eclipse Kepler או מאוחר יותר

עבור הגרסה החדשה יותר של Eclipse (קפלר, לונה וכו '), ההתקנה של eCobertura עלול לגרום לכמה בעיות הקשורות ל- JUnit - הגרסה החדשה יותר של JUnit הארוזה עם Eclipse אינה תואמת לחלוטין eCoberturaבודק התלות:

לא ניתן להשלים את ההתקנה מכיוון שלא ניתן למצוא פריט אחד או יותר. תוכנה המותקנת: eCobertura 0.9.8.201007202152 (ecobertura.feature.group 0.9.8.201007202152) דרישה חסרה: ממשק משתמש eCobertura 0.9.8.201007202152 (ecobertura.ui 0.9.8.201007202152) דורש 'חבילה org.junit4 0.0.0' אך לא ניתן היה למצוא לא יכול לספק תלות: מאת: eCobertura 0.9.8.201007202152 (ecobertura.feature.group 0.9.8.201007202152) אל: ecobertura.ui [0.9.8.201007202152]

כדרך לעקיפת הבעיה, אתה יכול להוריד גרסה ישנה יותר של JUnit ולהכניס אותה לתיקיית תוספי Eclipse.

ניתן לעשות זאת על ידי מחיקת התיקיה org.junit. *** מ % ECLIPSE_HOME% / תוספיםולאחר מכן העתקת אותה תיקייה מהתקנה ישנה יותר של Eclipse התואמת eCobertura.

לאחר שתסיים, הפעל מחדש את ID Eclipse והתקן מחדש את התוסף באמצעות אתר העדכונים המתאים.

3.3. דוחות כיסוי קוד בליקוי החמה

על מנת לחשב את כיסוי הקוד על ידי בדיקת יחידות, לחץ באמצעות לחצן העכבר הימני על הפרויקט / הבדיקה שלך כדי לפתוח את תפריט ההקשר, ואז בחר באפשרות כריכה בשם → מבחן JUnit.

תחת מושב סיקור תצוגה, אתה יכול לבדוק את דוח כיסוי הקו / סניף לפי כיתה:

משתמשי Java 8 עשויים להיתקל בשגיאה נפוצה בעת חישוב כיסוי הקוד:

java.lang.VerifyError: מצפה למסגרת stackmap ביעד הסניף ...

במקרה זה, ג'אווה מתלוננת על כמה שיטות שאין להן מפת ערימה מתאימה, בגלל מאמת קוד הקוד המחמיר שהוצג בגרסאות חדשות יותר של Java.

ניתן לפתור בעיה זו על ידי השבתת אימות במכונה הווירטואלית של Java.

לשם כך, לחץ באמצעות לחצן העכבר הימני על הפרויקט שלך כדי לפתוח את תפריט ההקשר, בחר כיסוי כואז פתח את תצורות כיסוי נוף. בכרטיסייה ארגומנטים, הוסף את -להאחיד דגל כארגומנט של VM. לבסוף, לחץ על כיסוי כפתור להפעלת חישוב הכיסוי.

אתה יכול גם להשתמש בדגל -XX: -UseSplitVerifier, אך זה עובד רק עם Java 6 ו- 7, מכיוון שמאמת הפיצול אינו נתמך עוד ב- Java 8.

4. מסקנה

במאמר זה, הראינו בקצרה כיצד להשתמש ב- Cobertura לחישוב כיסוי הקוד בפרויקט Java. תיארנו גם את השלבים הנדרשים להתקנה eCobertura בסביבת הליקוי שלך.

Cobertura הוא כלי נהדר אך פשוט לכיסוי קוד, אך אינו מתוחזק באופן פעיל, מכיוון שהוא מוחלק כיום על ידי כלים חדשים וחזקים יותר כמו JaCoCo.

לבסוף, תוכלו לבדוק את הדוגמה המובאת במאמר זה ב פרויקט GitHub.