Instrumented tests check how your app works on a real device or emulator. They help make sure your app behaves correctly when users interact with it.
Instrumented tests in Android Kotlin
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry import org.junit.Test import org.junit.runner.RunWith import org.junit.Assert.* @RunWith(AndroidJUnit4::class) class ExampleInstrumentedTest { @Test fun useAppContext() { val appContext = InstrumentationRegistry.getInstrumentation().targetContext assertEquals("com.example.myapp", appContext.packageName) } }
Use @RunWith(AndroidJUnit4::class) to tell Android to run the test on a device or emulator.
Use InstrumentationRegistry.getInstrumentation().targetContext to get the app context during the test.
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry import org.junit.Test import org.junit.runner.RunWith import org.junit.Assert.* @RunWith(AndroidJUnit4::class) class SimpleInstrumentedTest { @Test fun checkPackageName() { val context = InstrumentationRegistry.getInstrumentation().targetContext assertEquals("com.example.app", context.packageName) } }
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry import org.junit.Test import org.junit.runner.RunWith import org.junit.Assert.* @RunWith(AndroidJUnit4::class) class DeviceFeatureTest { @Test fun hasCamera() { val context = InstrumentationRegistry.getInstrumentation().targetContext val pm = context.packageManager val hasCamera = pm.hasSystemFeature("android.hardware.camera") assertTrue(hasCamera) } }
This is a simple instrumented test that runs on a device or emulator. It checks if the app's package name is "com.example.myapp". If the package name matches, the test passes. This helps confirm the app is installed and running correctly.
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry import org.junit.Test import org.junit.runner.RunWith import org.junit.Assert.* @RunWith(AndroidJUnit4::class) class ExampleInstrumentedTest { @Test fun useAppContext() { val appContext = InstrumentationRegistry.getInstrumentation().targetContext assertEquals("com.example.myapp", appContext.packageName) } }
Instrumented tests run on a real device or emulator, so they take longer than simple unit tests.
Make sure your device or emulator is connected and ready before running instrumented tests.
Use Android Studio's Run or Debug options to execute instrumented tests easily.
Instrumented tests check app behavior on real devices or emulators.
They help test UI, device features, and app context.
Use @RunWith(AndroidJUnit4::class) and InstrumentationRegistry to write these tests.