AndroidX Test incluye un conjunto de reglas de JUnit para usar con AndroidJUnitRunner
. Esas reglas proporcionan más flexibilidad y reducen el código estándar requerido en las pruebas.
ActivityTestRule
Esta regla proporciona pruebas funcionales de una sola actividad. La actividad en prueba se inicia antes de cada prueba anotada con @Test
y antes de cualquier método anotado con @Before
. Finaliza una vez que se completan la prueba y todos los métodos anotados con @After
. Para acceder a la actividad que se está probando en tu lógica de prueba, llama a ActivityTestRule.getActivity()
.
Nota: TestAndroidX incluye otra API, ActivityScenario
, que actualmente se encuentra en fase Beta. Esta API funciona en un varios entornos de prueba y proporciona seguridad de subprocesos dentro de las pruebas que la usan.
Te recomendamos que pruebes la API para ver cómo puede ayudarte a impulsar los ciclos de vida de las actividades de tu app.
En el siguiente fragmento de código, se muestra cómo incorporar ActivityTestRule
en tu lógica de pruebas:
Kotlin
@RunWith(AndroidJUnit4::class.java) @LargeTest class MyClassTest { @get:Rule val activityRule = ActivityTestRule(MyClass::class.java) @Test fun myClassMethod_ReturnsTrue() { ... } }
Java
@RunWith(AndroidJUnit4.class) @LargeTest public class MyClassTest { @Rule public ActivityTestRule<MyClass> activityRule = new ActivityTestRule(MyClass.class); @Test public void myClassMethod_ReturnsTrue() { ... } }
ServiceTestRule
Esta regla proporciona un mecanismo simplificado para iniciar y finalizar el servicio antes y después de la prueba. También garantiza que el servicio se conecte correctamente cuando se inicia o se vincula un servicio. El servicio se puede iniciar o vincular mediante uno de los métodos auxiliares. Se detiene o desvincula automáticamente después de que se completa la prueba, y se completa cualquier método anotado con @After
.
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 las reglas JUnit en las pruebas de Android, consulte los siguientes recursos.
Muestras
- BasicSample: uso simple de
ActivityTestRule