Cas de Test unitaire avec JUnit +(Robolectric ou Mockito ou les deux dans Android)

C'est la première fois que je dois écrire des cas de test unitaire dans Android.

J'ai donc cherché beaucoup de choses.

  1. Robolectric framewordk - fonctionne sur JVM
  2. Mockito Framwork - objets moqueurs

J'ai donc quelques doutes dans Robolectric & Mokito.

  1. devrais-je utiliser Robolectric uniquement avec JUnit dans L'application Android?
  2. dois-je utiliser Mockito uniquement avec JUnit dans L'application Android?
  3. Devrais-je aller avec les deux cadre?
  4. Quelle est la différence entre Mockito et Robolectric?

J'ai une recherche de différence entre Mokito et Robolectric mais je n'obtiens aucune réponse appropriée pour cela.

S'il vous plaît suggérer.

22
demandé sur Sufian 2016-06-09 11:01:38

2 réponses

Ils ont des usages légèrement différents et j'ai tendance à utiliser les deux dans mes projets.

Mockito

Est utilisé pour faire des moqueries de VOS classes.

Lorsque vous testez une classe particulière, vous vous moquez de toutes ses dépendances avec Mockito.

Si possible, la plupart de vos tests doivent utiliser mockito. Pour rendre cela possible, la plupart des gens divisent leur code en MVP, etc. où la logique métier est séparée de la logique de vue. De cette façon votre logique métier (Présentateur) n'a aucune connaissance (ou dépendances) sur la bibliothèque Android et n'a pas besoin d'en avoir des moqueries.

Robolectric

Est une bibliothèque qui contient de nombreuses se moque de Android classes.

Le coureur de test Robolectric injecte ces "objets d'ombre" à la place des classes Android réelles lorsque les tests sont exécutés. C'est ce qui permet aux tests de s'exécuter sur la JVM sans démarrer une instance D'Android.

Lorsque vous utilisez MVP, votre calque de vue a tendance à être implémenté par L'activité / Fragment et c'est là que vous pouvez utiliser Robolectric pour se moquer de ceux-ci.

Notes

Utilisez Robolectric uniquement si nécessaire. Il ré-implémente essentiellement des parties du framework Android, mais pas toujours exactement de la même manière.

Vous pouvez également avoir besoin de une autre bibliothèque telle que PowerMock. Cela permet de se moquer des classes statiques telles que les mathématiques ou peut être utilisé pour se moquer des classes Android statiques telles que TextUtils.

Les Deux sont utilisés avec JUnit

30
répondu Jahnold 2016-06-09 08:27:56

Mockito seul peut couvrir la plupart des cas.

Cependant, Robolectric peut également fournir des opérations limitées sur les composants Android tels que L'activité ou le Fragment dans Unit Test (Pas de test d'instrumentation, qui ne dépend pas du SDK Android), qui ne nécessite aucun émulateur ou périphérique et est considérablement plus rapide que les tests d'instrumentation.

Ma suggestion: utilisez Mockito pour le test unitaire et Espresso pour le test D'interface utilisateur car ce sont des frameworks de test semi-officiels pour Android.

Ajoutez Robolectric dans votre test unitaire s'il y a des dépendances sur Android SDK.

10
répondu Eric Liu 2016-06-09 08:09:11