Android - Jacoco Coverage Report contains coverage for Unit Test Cases, but for instrument test cases, coverage is 0%

Viewed 19

I am trying to generate a global coverage report for my android project, which comprises of both Unit Test Cases and Instrumentation Test Cases. The report contains coverage for Unit Test Cases only, but for Instrumentation Test Cases, it is 0%. Please find below the code and gradle commands.

task jacocoTestReport(type: JacocoReport, dependsOn: ["testDebugUnitTest", "createDebugAndroidTestCoverageReport", "connectedAndroidTest"]) {
    group = "Reporting"
    description = "Generate Jacoco coverage reports"

    reports {
        xml.required = true
        html.required = true
    }

    def fileFilter = ['**/AndroidManifest.xml', '**/strings.xml', '**/*.xml', '**/*.json']
    def mainSrc = "${project.projectDir}"
    def kotlinTree = fileTree(dir: "$project.buildDir/tmp/kotlin-classes/debugUnitTest", excludes: fileFilter)
    def kotlinUITree = fileTree(dir: "$project.buildDir/tmp/kotlin-classes/debugAndroidTest", excludes: fileFilter)
    sourceDirectories.setFrom(files([mainSrc]))
    classDirectories.setFrom(files([kotlinTree, kotlinUITree]))
    executionData.setFrom(fileTree(dir: "$project.buildDir",
            includes: ['**/*.exec', '**/*.ec']
    ))
}
**Gradle Commands :** 

gradlew clean build

gradlew connectedAndroidTest jacocoTestReport

Below is the code for Instrumentation Class :

@LargeTest
@RunWith(AndroidJUnit4::class)
class ExampleActivityTest {

    private lateinit var scenario: ActivityScenario<ExampleActivity>


    @Before
    fun setup() {
        scenario = ActivityScenario.launch(ExampleActivity::class.java)
        scenario.moveToState(Lifecycle.State.RESUMED)
    }

    @After
    fun postExecution() {
        scenario.moveToState(Lifecycle.State.DESTROYED)
    }

    @Test
    fun addTaxReceipt() {
        val fullName = "Carlos"
        
        onView(withId(R.id.edt_full_name))
            .perform(typeText(fullName))
            .perform(closeSoftKeyboard())

        val appContext = InstrumentationRegistry.getInstrumentation().targetContext
        assertEquals("com.example.project.android", appContext.packageName)
    }
}

Attached below is the screenshot for coverage report :

CoverageReport

Please help me to fix this issue. Thank you.

0 Answers
Related