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 :
Please help me to fix this issue. Thank you.