Reglas de JUnit4 con AndroidX Test

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