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.

  1. Robolectric framewordk – Se ejecuta en JVM
  2. Mockito Framwork – Objetos burlones

Así que tengo algunas dudas en Robolectric & Mokito.

  1. ¿Debo usar Robolectric solo con JUnit en la aplicación de Android?
  2. ¿Debo usar Mockito sólo con JUnit en la aplicación de Android?
  3. ¿Debo tener que ir con ambos marco?
  4. ¿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.

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.

  • Robolectric Test no llama a textWatcher.onTextChanged
  • El RoboAttributeSet de Robolectric nunca se lee
  • Cambiar la conectividad de Android con Robolectric
  • Android - Prueba de un recurso de cadena con Robolectric
  • Cómo probar el servicio remotel
  • Configurar la carpeta de prueba para las pruebas unitarias en el estudio de Android
  • ¿Cómo probar características de hardware específicas con Robolectric en android?
  • Recursos $ NotFoundException al usar Robolectric con Gradle
  • TypeNotPresentException al ejecutar el testcase de Android con robolectric y eclipse
  • Error en el corredor al realizar pruebas con Robolectric
  • Automatización de la caja de prueba de la unidad Android: biblioteca Robolectric vs marco de pruebas de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.