Casos de prueba de unidad con JUnit + (Robolectric o Mockito o ambos en Android)
Esta es la primera vez que tengo que escribir casos de prueba de unidad en Android.
Así que he buscado muchas cosas.
- Cómo obtener Spannable y su color de TextView para escribir una prueba de unidad
- Java.lang.IllegalStateException: debe haber habido alguna superposición para resourceIdToResName
- Robolectric 2.x + Maven en Jenkins falló con las dependencias APKLIB
- Prueba de solicitudes okHttp con Robolectric - callbacks
- Configuración de Robolectric, Android Studio y Gradle para tomar una aplicación de prueba
- Robolectric framewordk – Se ejecuta en JVM
- Mockito Framwork – Objetos burlones
Así que tengo algunas dudas en Robolectric & Mokito.
- ¿Debo usar Robolectric solo con JUnit en la aplicación de Android?
- ¿Debo usar Mockito sólo con JUnit en la aplicación de Android?
- ¿Debo tener que ir con ambos marco?
- ¿Cuál es la diferencia entre Mockito y Robolectric?
Tengo la búsqueda de la diferencia entre Mokito y Robolectric, pero no obtienen ninguna respuesta adecuada para eso.
Por favor recomiende.
- Prueba de Android con Robolectric
- Error al usar Robolectric para probar un ActionBarActivity
- Recursos de la biblioteca con Robolectric 3 - JodaTime
- Robolectric - La aplicación tiene Singletons en la configuración, causando problemas con las pruebas
- ¿Cómo puedo probar fragmentos con Robolectric?
- Cómo probar menú en Android con Robolectric
- Cómo ejecutar pruebas de unidad con Android Studio
- Mock Retrofit Observable <T> respuesta en las pruebas de la unidad Android
Tienen usos ligeramente diferentes y tienden a usar ambos en mis proyectos.
Mockito
Se utiliza para hacer burlas de sus clases.
Cuando está probando una clase en particular, se burla de todas sus dependencias con Mockito.
Donde sea posible, la mayoría de sus pruebas deben usar mockito. Para que esto sea posible, la mayoría de la gente divide su código en MVP, etc., donde la lógica de negocio se separa de la lógica de Vista. De esta manera, su lógica de negocio (presentador) no tiene conocimiento (o dependencias) en la biblioteca de Android y no tiene necesidad de tener burlas de ellos.
Robómetro
Es una biblioteca que contiene muchas burlas de las clases de Android .
El corredor de pruebas Robolectric inyecta estos 'objetos sombra' en lugar de las clases reales de Android cuando se ejecutan las pruebas. Esto es lo que permite que las pruebas se ejecuten en la JVM sin iniciar una instancia de Android.
Cuando se usa MVP, la capa de Vista tiende a ser implementada por la Actividad / Fragmento y aquí es donde puede usar Robolectric para burlarse de éstos.
Notas
Utilice Robolectric sólo cuando sea necesario. Básicamente, re-implementa partes de la estructura de Android, pero no siempre de la misma manera.
También puede necesitar otra biblioteca como PowerMock. Esto permite el burlado de clases estáticas como Math o puede ser utilizado para simular clases estáticas de Android como TextUtils.
Ambos se utilizan con JUnit
Mockito solo puede cubrir la mayoría de los casos.
Sin embargo, Robolectric también puede proporcionar operaciones limitadas en Android Component como Activity o Fragment in Unit Test (no prueba de instrumentación, que no tiene dependencia de Android SDK), que no requiere ningún emulador o dispositivos y es considerablemente más rápido que las pruebas de instrumentación.
Mi sugerencia: utilizar Mockito para la prueba de unidad y Espresso para la prueba de la interfaz de usuario, ya que son marcos de prueba semi-oficiales para Android.
Agregue Robolectric en su prueba de unidad si hay algunas dependencias en Android SDK.
- ¿Cómo obtener el nuevo NavigationView para jugar agradable con la barra de estado scrim?
- Relación entre android: minSdkVersion, android: targetSdkVersion y "target"