package com.example.app import android.Manifest import android.content.pm.PackageManager import androidx.test.espresso.Espresso.onView import androidx.test.espresso.assertion.ViewAssertions.matches import androidx.test.espresso.matcher.ViewMatchers.isDisplayed import androidx.test.espresso.matcher.ViewMatchers.withId import androidx.test.ext.junit.rules.ActivityScenarioRule import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SdkSuppress import androidx.test.platform.app.InstrumentationRegistry import androidx.test.rule.GrantPermissionRule import org.junit.Assert.assertEquals import org.junit.Rule import org.junit.Test import org.junit.rules.RuleChain import org.junit.rules.TestRule import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) @SdkSuppress(minSdkVersion = 23) class CameraPermissionTest { private val permissionRule = GrantPermissionRule.grant(Manifest.permission.CAMERA) private val activityRule = ActivityScenarioRule(CameraActivity::class.java) @get:Rule val rules: TestRule = RuleChain .outerRule(permissionRule) .around(activityRule) @Test fun cameraScreenOpensWithPermissionGranted() { val context = InstrumentationRegistry .getInstrumentation() .targetContext assertEquals( PackageManager.PERMISSION_GRANTED, context.checkSelfPermission(Manifest.permission.CAMERA) ) onView(withId(R.id.camera_preview)) .check(matches(isDisplayed())) } }