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:
@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.
}
}
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.
@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()
}
}
@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