Package 

Class ActivityScenarioExtension

  • All Implemented Interfaces:
    org.junit.jupiter.api.extension.AfterEachCallback , org.junit.jupiter.api.extension.BeforeEachCallback , org.junit.jupiter.api.extension.Extension , org.junit.jupiter.api.extension.ParameterResolver

    
    public final class ActivityScenarioExtension<A extends Activity>
     implements BeforeEachCallback, AfterEachCallback, ParameterResolver
                        

    JUnit 5 Extension for the ActivityScenario API, provided by the AndroidX test core library.

    This extension is used in lieu of a JUnit 4 Rule to automatically launch/stop an ActivityScenario for each test case.

    To use this extension in your test class, add it as a non-private instance field to your test class, using one of the factory methods named launch. Then, annotate this field with JUnit Jupiter's RegisterExtension annotation. In Kotlin, also add JvmField or else the generated property won't be visible to the TestEngine!

    // Java
    class MyActivityTests {
    
      @RegisterExtension
      final ActivityScenarioExtension<MyActivity> scenarioExtension = ActivityScenarioExtension.launch(MyActivity.class);
    }
    
    // Kotlin
    class MyActivityTests {
    
      @JvmField
      @RegisterExtension
      val scenarioExtension = ActivityScenarioExtension.launch<MyActivity>()
    }

    In your test method, you can obtain a reference to the scenario in two ways:

    A) You obtain it from the extension directly through its accessor method:

    // Java
    class MyActivityTests {
    
      @RegisterExtension
      final ActivityScenarioExtension<MyActivity> scenarioExtension = ActivityScenarioExtension.launch(MyActivity.class);
    
      @Test
      void myTest() {
        ActivityScenario<MyActivity> scenario = scenarioExtension.getScenario();
        // Use the scenario...
      }
    }
    
    // Kotlin
    class MyActivityTests {
    
      @JvmField
      @RegisterExtension
      val scenarioExtension = ActivityScenarioExtension.launch<MyActivity>()
    
      @Test
      fun myTest() {
        val scenario = scenarioExtension.scenario
        // Use the scenario...
      }
    }

    B) You add a parameter of type ActivityScenario, with the activity class as its generic type:

    // Java
    class MyActivityTests {
    
      @RegisterExtension
      final ActivityScenarioExtension<MyActivity> scenarioExtension = ActivityScenarioExtension.launch(MyActivity.class);
    
      @Test
      void myTest(ActivityScenario<MyActivity> scenario) {
        // Use the scenario...
      }
    }
    
    // Kotlin
    class MyActivityTests {
    
      @JvmField
      @RegisterExtension
      val scenarioExtension = ActivityScenarioExtension.launch<MyActivity>()
    
      @Test
      fun myTest(scenario: ActivityScenario<MyActivity>) {
        // Use the scenario...
      }
    }
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private final ActivityScenario<A> scenario
    • Method Summary

      Modifier and Type Method Description
      final ActivityScenario<A> getScenario()
      Unit beforeEach(ExtensionContext context)
      Unit afterEach(ExtensionContext context)
      Boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext)
      Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext)
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait