कोड कवरेज की रिपोर्ट देखना

Android Gradle प्लग इन, कोड कवरेज रिपोर्ट बना सकता है. ये रिपोर्ट, आपके कोड के उस प्रतिशत को ट्रैक करती हैं जिसे आपके टेस्ट कवर करते हैं. इस पेज पर, कवरेज रिपोर्टिंग की सुविधा चालू करने और रिपोर्ट जनरेट करने का तरीका बताया गया है.

हर वैरिएंट के लिए, हर तरह के टेस्ट (यूनिट और इंस्ट्रुमेंटेशन) की कवरेज रिपोर्ट जनरेट की जा सकती हैं. अलग-अलग तरह के टेस्ट, मॉड्यूल, और बिल्ड के वैरिएंट के लिए, यूनिफ़ाइड कवरेज रिपोर्ट भी जनरेट की जा सकती हैं.

कोड कवरेज की सुविधा चालू करना

हर वैरिएंट के लिए, मॉड्यूल-लेवल की बिल्ड फ़ाइलों में enableAndroidTestCoverage और enableUnitTestCoverage को true पर सेट करके, कोड कवरेज की सुविधा चालू करनी होगी. ऐसा करने पर ही आपको कवरेज रिपोर्ट मिलेंगी:

Kotlin

android {
    // ...
    buildTypes {
        debug {
            // Enable coverage for unit tests
            enableUnitTestCoverage = true
            // Enable coverage for instrumentation tests
            enableAndroidTestCoverage = true
        }
    }
}

Groovy

android {
    // ...
    buildTypes {
        debug {
            // Enable coverage for unit tests
            enableUnitTestCoverage true
            // Enable coverage for instrumentation tests
            enableAndroidTestCoverage true
        }
    }
}

Jacoco का वर्शन बदलना (ज़रूरी नहीं)

जब मॉड्यूल पर कवरेज की सुविधा चालू की जाती है, तब एजीपी अपने-आप Jacoco को लागू कर देता है. हालांकि, अगर आपको Jacoco के किसी खास वर्शन का इस्तेमाल करना है, तो उसे अपनी मॉड्यूल-लेवल की बिल्ड फ़ाइल में तय किया जा सकता है:

Kotlin

android {
    testCoverage {
        jacocoVersion = "JACOCO_VERSION"
    }
}

Groovy

android {
    testCoverage {
        jacocoVersion = 'JACOCO_VERSION'
    }
}

वैरिएंट के हिसाब से कवरेज रिपोर्ट जनरेट करना

किसी वैरिएंट के लिए, सिर्फ़ यूनिट टेस्ट या सिर्फ़ इंस्ट्रुमेंटेड टेस्ट की कवरेज रिपोर्ट जनरेट करने के लिए, उससे जुड़े टास्क चलाएं.

टेस्ट टाइप निर्देश जगह की जानकारी की शिकायत करना
यूनिट टेस्ट ./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 टास्क का इस्तेमाल करके, यूनिफ़ाइड कोड कवरेज रिपोर्ट जनरेट की जा सकती हैं. इन टास्क से एक एचटीएमएल रिपोर्ट जनरेट होगी. इसमें अलग-अलग तरह के टेस्ट (यूनिट और इंस्ट्रुमेंटेशन), मॉड्यूल, और बिल्ड के वैरिएंट से मिलने वाला कवरेज डेटा शामिल होगा. इससे आपको एक ही डैशबोर्ड में, अपने प्रोजेक्ट के कोड कवरेज की पूरी जानकारी मिलती है.

ज़रूरी शर्तें

एक यूनिफ़ाइड रिपोर्ट जनरेट करने के लिए, कमांड लाइन से इनमें से कोई एक टास्क चलाएं:

कवरेज का दायरा निर्देश ब्यौरा जगह की जानकारी की शिकायत करना
मौजूदा मॉड्यूल ./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/

जनरेट की गई एचटीएमएल रिपोर्ट के लैंडिंग पेज पर, सभी मॉड्यूल की खास जानकारी दिखती है. मॉड्यूल से पैकेज, पैकेज से क्लास, और क्लास से सोर्स फ़ाइल तक ड्रिल-डाउन किया जा सकता है. लाइन और ब्रांच कवरेज के लिए हाइलाइट किया गया कोड देखने के लिए, किसी भी फ़ाइल पर क्लिक करें:

  • हरा: कवर की गई लाइनें.
  • लाल: ऐसी लाइनें जो कवर नहीं की गई हैं.
  • पीला: कुछ हद तक कवरेज (कुछ निर्देश या ब्रांच छूट गई हैं).

इंस्ट्रुमेंटेड टेस्ट के लिए, उपयोगकर्ता के डिवाइस पर कोड कवरेज का इस्तेमाल करना

डिफ़ॉल्ट रूप से, एजीपी आपके ऐप्लिकेशन को बनाते समय, JaCoCo की मदद से आपके ऐप्लिकेशन की क्लास को इंस्ट्रुमेंट करके, इंस्ट्रुमेंटेशन टेस्ट के कवरेज को मेज़र करता है. एजीपी 9.6.0-alpha01 से, उपयोगकर्ता के डिवाइस पर इंस्ट्रुमेंटेशन का इस्तेमाल किया जा सकता है. इससे, टेस्ट चलने के दौरान, टेस्ट के लिए डिवाइस पर आपके ऐप्लिकेशन की क्लास को इंस्ट्रुमेंट किया जाता है. ज़्यादा जानकारी के लिए, कोड कवरेज की रिपोर्ट देखना (उपयोगकर्ता के डिवाइस पर मौजूद एजेंट की मदद से) लेख पढ़ें.