AndroidX Test incluye un conjunto de reglas JUnit para usar con la AndroidJUnitRunner; Las reglas JUnit brindan más flexibilidad y reducen el código estándar requerido en las pruebas. Por ejemplo, se pueden usar para iniciar un una actividad específica.
Regla ActivitySituación
Esta regla proporciona pruebas funcionales de una sola actividad. La regla inicia
la actividad elegida antes de cada prueba anotada con @Test
, así como antes
cualquier método anotado con @Before
La regla finaliza la actividad después de que
se completa la prueba y todos los métodos anotados con @After
finalizan. Para acceder a los
en tu lógica de prueba, proporciona una devolución de llamada ejecutable
ActivityScenarioRule.getScenario().onActivity()
En el siguiente fragmento de código, se demuestra cómo incorporar
ActivityScenarioRule
en tu lógica de prueba:
Kotlin
@RunWith(AndroidJUnit4::class.java) @LargeTest class MyClassTest { @get:Rule val activityRule = ActivityScenarioRule(MyClass::class.java) @Test fun myClassMethod_ReturnsTrue() { activityRule.scenario.onActivity { … } // Optionally, access the activity. } }
Java
public class MyClassTest { @Rule public ActivityScenarioRule<MyClass> activityRule = new ActivityScenarioRule(MyClass.class); @Test public void myClassMethod_ReturnsTrue() { ... } }
ServiceTestRule
Esta regla brinda un mecanismo simplificado para iniciar el servicio antes de la
y apágalo antes y después. Puedes iniciar o vincular el servicio con
uno de los métodos auxiliares. Se detiene o desvincula automáticamente después de la prueba.
se completa y todos los métodos anotados con @After
finalizaron.
Kotlin
@RunWith(AndroidJUnit4::class.java) @MediumTest class MyServiceTest { @get:Rule val serviceRule = ServiceTestRule() @Test fun testWithStartedService() { serviceRule.startService( Intent(ApplicationProvider.getApplicationContext<Context>(), MyService::class.java)) // Add your test code here. } @Test fun testWithBoundService() { val binder = serviceRule.bindService( Intent(ApplicationProvider.getApplicationContext(), MyService::class.java)) val service = (binder as MyService.LocalBinder).service assertThat(service.doSomethingToReturnTrue()).isTrue() } }
Java
@RunWith(AndroidJUnit4.class) @MediumTest public class MyServiceTest { @Rule public final ServiceTestRule serviceRule = new ServiceTestRule(); @Test public void testWithStartedService() { serviceRule.startService( new Intent(ApplicationProvider.getApplicationContext(), MyService.class)); // Add your test code here. } @Test public void testWithBoundService() { IBinder binder = serviceRule.bindService( new Intent(ApplicationProvider.getApplicationContext(), MyService.class)); MyService service = ((MyService.LocalBinder) binder).getService(); assertThat(service.doSomethingToReturnTrue()).isTrue(); } }
Recursos adicionales
Para obtener más información sobre el uso de reglas JUnit en pruebas de Android, consulta el los siguientes recursos.
Documentación
- Prueba tus fragmentos para probar fragmentos de forma aislada.
- Prueba tu diseño de Compose para probar las IUs creadas con Compose.
Ejemplos
- BasicSample: uso simple de
ActivityScenarioRule