Esta respuesta es para personas que recién están comenzando con las pruebas de Android. Proporcionaré dos ejemplos simples para ayudarlo a ver cómo funcionan las pruebas. Si lo sigue durante los próximos 10 minutos, estará listo para comenzar a agregar sus pruebas a su propia aplicación. Creo que te sorprenderá lo fácil que es. Ciertamente lo estaba.
Introducción a las pruebas de Android
Hay dos tipos diferentes de pruebas que realizará.
- Pruebas unitarias locales. Estos se ejecutan localmente en la JVM (máquina virtual Java). Como son locales, son rápidos. Puede usarlos para probar las partes de su código que solo necesitan Java y no las API de Android. (A veces puedes crear un objeto API falso para probar más cosas localmente. Esto se llama burla . Una burla
Context
es un ejemplo).
- Pruebas instrumentadas. Estas pruebas se ejecutan en un dispositivo real o en el emulador. Eso los hace más lentos que las pruebas locales. Sin embargo, son más flexibles porque tiene disponible la API de Android completa.
Cree un nuevo proyecto y verá las siguientes carpetas predeterminadas.
Todo ya está ahí y esperando a que cree sus pruebas. ¡Ya está todo configurado!
Cómo crear pruebas unitarias locales
Abra el ExampleUnitTest
archivo que se muestra en la imagen de arriba. debería verse algo como esto:
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
assertEquals(4, 2 + 2);
}
}
Presione la flecha verde doble para ejecutar todas las pruebas o la flecha verde única para ejecutar solo una. (En este caso, solo hay una prueba, por lo que ambos hacen lo mismo).
Debería aprobarse (siempre que 2 + 2
esté quieto 4
cuando esté leyendo esta respuesta). ¡Felicitaciones, acaba de ejecutar su primera prueba!
Haciendo tu propia prueba
Escribamos nuestra propia prueba. Primero agregue esta clase a su proyecto de aplicación principal para que tengamos algo que probar:
public class MyClass {
public int add(int a, int b) {
return a + b;
}
}
Ahora cambie el addition_isCorrect()
método en la clase de prueba para que sea como el siguiente código (o simplemente agregue otro método con un nombre diferente):
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
MyClass myClass = new MyClass();
int result = myClass.add(2, 2);
int expected = 4;
assertEquals(expected, result);
}
}
Ejecútelo de nuevo y debería verlo pasar. ¡Felicitaciones, acaba de crear su propia primera prueba! (Bueno, supongo que técnicamente era mío, pero, oye, lo suficientemente cerca. Lo que es mío es tuyo).
Cómo crear pruebas instrumentadas
Abra el ExampleInstrumentedTest
archivo. debería verse algo como esto:
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() throws Exception {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getTargetContext();
assertEquals("com.example.myapp", appContext.getPackageName());
}
}
Presiona uno de esos botones verdes nuevamente.
Siempre que tenga un dispositivo real conectado o el emulador configurado, debería haberlo iniciado y ejecutar su aplicación. ¡Felicitaciones, acaba de ejecutar su primera prueba instrumentada!
Haciendo tu propia prueba
Las pruebas instrumentadas utilizan Espresso para ejecutar las pruebas. Es como su propio pequeño usuario de robot que puede probar su aplicación. Puede decirle que haga algo como presionar un botón o leer las propiedades de un TextView.
Puede escribir las instrucciones sobre cómo hacer la prueba a mano, pero como estamos comenzando, usemos la función de grabación automática . Es super simple.
Primero agregue un botón a su interfaz de usuario para que tengamos algo con lo que trabajar. Hice esto:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.myapp.MainActivity">
<Button
android:id="@+id/myButton"
android:text="Click me"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</android.support.constraint.ConstraintLayout>
Luego presione Ejecutar> Grabar prueba de espresso en el menú.
Después de que comience, haga clic en el botón en el emulador y luego, para terminar, elija Aceptar en el cuadro de diálogo Grabar. Debería generar automáticamente el siguiente código de prueba.
@LargeTest
@RunWith(AndroidJUnit4.class)
public class MainActivityTest {
@Rule
public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule<>(MainActivity.class);
@Test
public void mainActivityTest() {
ViewInteraction appCompatButton = onView(
allOf(withId(R.id.myButton), withText("Click me"), isDisplayed()));
appCompatButton.perform(click());
}
}
¡Excelente! ¡Acaba de crear su primera prueba instrumentada! Eso fue muy fácil. Probablemente debería agregar una afirmación para que sea una prueba real, pero eso también es bastante fácil de hacer con la grabadora. Mira este video para profundizar un poco más.
Estudio adicional
Primero veía los videos y luego leía la documentación. Todo es muy útil. El último enlace es a una serie de artículos que cubren algunas cosas importantes en las que pensar al elegir qué probar.