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, Problemas con los elementos de la lista de clics
  • Recursos $ NotFoundException al llamar a Robolectric.buildActivity ()
  • Robolectric - cómo desactivar una prueba de unidad?
  • Pruebas con Robolectric y ANT
  • Prueba de vistas personalizadas con Robolectric: Ancho y altura siempre son 0
  • Cómo determinar la unidad de píxeles (px, dp, etc) de una vista en Java?
  • ¿Cómo puedo burlarme del contexto usando Mockito y Robolectric?
  • Algunas pruebas Robolectric fallan cuando funcionan todas juntas pero pasan individualmente
  • ¿Por qué se realiza la primera prueba con Robolectric tomando tanto tiempo?
  • Ejecución de Gradle prueba con Robolectric y AppCompat resultados en NullPointerException
  • Comprobación de que se ha iniciado una actividad con FLAG_ACTIVITY_CLEAR_TOP
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.