Bird
Raised Fist0
Android Kotlinmobile~5 mins

Instrumented tests in Android Kotlin - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What are instrumented tests in Android development?
Instrumented tests run on a real device or emulator and can interact with the Android framework and UI components.
Click to reveal answer
beginner
Which Android testing framework is commonly used for instrumented tests?
Espresso is commonly used for instrumented UI tests in Android to simulate user interactions.
Click to reveal answer
beginner
Where are instrumented test files located in an Android project?
They are located in the src/androidTest/java directory of the project.
Click to reveal answer
intermediate
What annotation is used to mark an instrumented test class in Android?
The @RunWith(AndroidJUnit4::class) annotation marks a class to run with the AndroidJUnit4 test runner.
Click to reveal answer
beginner
Why do instrumented tests require a device or emulator to run?
Because they interact with Android system components and UI, which only exist on a device or emulator.
Click to reveal answer
Where do instrumented tests run?
AOn a real device or emulator
BOn the local JVM without Android framework
COnly on physical devices
DOnly on desktop computers
Which directory contains instrumented test code in an Android project?
Asrc/main/java
Bsrc/test/java
Csrc/resources
Dsrc/androidTest/java
Which annotation is used to specify the test runner for instrumented tests?
A@RunWith(AndroidJUnit4::class)
B@Ignore
C@Before
D@Test
What is Espresso used for in Android instrumented tests?
AWriting local unit tests
BSimulating user interactions with UI
CBuilding APK files
DManaging app permissions
Why can't instrumented tests run on the local JVM alone?
AThey need internet access
BThey require special hardware
CThey require Android system APIs and UI components
DThey only test backend logic
Explain what instrumented tests are and why they are important in Android development.
Think about how you test the app like a user on a phone.
You got /4 concepts.
    Describe the typical setup and annotations needed to write an instrumented test in Kotlin for Android.
    Consider where the code lives and how the test runner is specified.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of instrumented tests in Android development?
      easy
      A. To test only the backend logic without UI
      B. To write unit tests that run on the local JVM
      C. To run tests on real devices or emulators to check app behavior
      D. To create UI layouts for the app

      Solution

      1. Step 1: Understand what instrumented tests do

        Instrumented tests run on actual devices or emulators to test app behavior in a real environment.
      2. Step 2: Compare with other test types

        Unit tests run locally on JVM and do not test device features or UI on real devices.
      3. Final Answer:

        To run tests on real devices or emulators to check app behavior -> Option C
      4. Quick Check:

        Instrumented tests = run on device/emulator [OK]
      Hint: Instrumented tests run on devices, not just local JVM [OK]
      Common Mistakes:
      • Confusing instrumented tests with unit tests
      • Thinking instrumented tests only test backend logic
      • Assuming instrumented tests create UI layouts
      2. Which annotation is required to run an instrumented test with AndroidJUnit4?
      easy
      A. @RunWith(AndroidJUnit4::class)
      B. @Ignore
      C. @Before
      D. @Test

      Solution

      1. Step 1: Identify the runner annotation

        Instrumented tests need the @RunWith(AndroidJUnit4::class) annotation to specify the test runner.
      2. Step 2: Differentiate from other annotations

        @Test marks test methods, @Before runs setup code, @Ignore skips tests; none specify the runner.
      3. Final Answer:

        @RunWith(AndroidJUnit4::class) -> Option A
      4. Quick Check:

        Runner annotation = @RunWith(AndroidJUnit4::class) [OK]
      Hint: Use @RunWith(AndroidJUnit4::class) to set test runner [OK]
      Common Mistakes:
      • Using @Test instead of @RunWith for runner
      • Confusing @Before with runner annotation
      • Forgetting to add any runner annotation
      3. Given this instrumented test code snippet, what will be the output?
      val appContext = InstrumentationRegistry.getInstrumentation().targetContext
      val packageName = appContext.packageName
      println(packageName)
      medium
      A. An empty string
      B. The package name of the app under test
      C. The package name of the test app
      D. A runtime exception

      Solution

      1. Step 1: Understand InstrumentationRegistry usage

        InstrumentationRegistry.getInstrumentation().targetContext returns the context of the app under test, not the test app.
      2. Step 2: Extract package name from app context

        appContext.packageName gives the package name of the app being tested, which is printed.
      3. Final Answer:

        The package name of the app under test -> Option B
      4. Quick Check:

        targetContext.packageName = app package [OK]
      Hint: targetContext is app under test, not test app [OK]
      Common Mistakes:
      • Confusing targetContext with testContext
      • Expecting empty string instead of package name
      • Assuming runtime exception without cause
      4. What is wrong with this instrumented test code?
      @RunWith(AndroidJUnit4::class)
      class ExampleInstrumentedTest {
        @Test
        fun useAppContext() {
          val context = InstrumentationRegistry.getContext()
          assertEquals("com.example.app", context.packageName)
        }
      }
      medium
      A. InstrumentationRegistry.getContext() is deprecated; should use getInstrumentation().targetContext
      B. Missing @Before annotation for setup
      C. assertEquals syntax is incorrect
      D. Missing @RunWith annotation

      Solution

      1. Step 1: Check InstrumentationRegistry usage

        InstrumentationRegistry.getContext() is deprecated and does not return the app context; getInstrumentation().targetContext should be used.
      2. Step 2: Verify other parts of the code

        @RunWith is present, assertEquals syntax is correct, and @Before is not required here.
      3. Final Answer:

        InstrumentationRegistry.getContext() is deprecated; should use getInstrumentation().targetContext -> Option A
      4. Quick Check:

        Use getInstrumentation().targetContext, not getContext() [OK]
      Hint: Use getInstrumentation().targetContext, not getContext() [OK]
      Common Mistakes:
      • Using deprecated getContext() method
      • Assuming @Before is mandatory for all tests
      • Thinking assertEquals syntax is wrong
      5. You want to write an instrumented test that verifies a button click updates a TextView on a real device. Which steps should you follow to correctly implement this test?
      hard
      A. Use @RunWith(AndroidJUnit4::class), get test context, launch activity, perform click, check TextView text
      B. Write a unit test with @Test, mock the button click, and check TextView text without device
      C. Write a UI test without annotations, directly call button click method and check TextView
      D. Use @RunWith(AndroidJUnit4::class), get app context with InstrumentationRegistry.getInstrumentation().targetContext, launch activity, perform click, check TextView text

      Solution

      1. Step 1: Setup instrumented test with correct runner and context

        Use @RunWith(AndroidJUnit4::class) and get app context via InstrumentationRegistry.getInstrumentation().targetContext to access real app environment.
      2. Step 2: Launch activity, perform UI action, and verify result

        Launch the activity, simulate button click, and check if TextView text updates as expected on device/emulator.
      3. Final Answer:

        Use @RunWith(AndroidJUnit4::class), get app context with InstrumentationRegistry.getInstrumentation().targetContext, launch activity, perform click, check TextView text -> Option D
      4. Quick Check:

        Instrumented UI test = runner + app context + UI actions [OK]
      Hint: Instrumented UI tests need real context and runner [OK]
      Common Mistakes:
      • Using test context instead of app context
      • Writing unit tests for UI behavior
      • Skipping @RunWith annotation
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard