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...
      }
    }
    • Constructor Summary

      Constructors 
      Constructor Description
    • Enum Constant Summary

      Enum Constants 
      Enum Constant Description
    • 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