2016-02-22 3 views
1

Je n'ai pas fait de test sous Android, alors s'il vous plaît gardez-moi si cela semble une question stupide. Je développe une application qui fait beaucoup d'appels réseau à partir d'un service API reposant. Pour passer les appels réseau, j'utilise Retrofit2 et RxJava.Android Appels d'API de test d'unité avec Retrofit2

Quelle serait la meilleure pratique/cadre pour tester si ces appels fonctionnent? J'ai commencé à lire le Codelab de Google pour testing qui utilise Junit4 et Mockito, mais je ne veux pas faire de clic dans l'interface pour commencer un test actuellement, je vérifie seulement les différentes versions de l'API dont les appels sont supportés ou non.

+0

Je l'ai essayé avec "Junit4" mais j'ai dû faire face à trop de problèmes, en particulier avec "App Context" lors de l'utilisation de mon adaptateur de repos, comme nos cas de test sont complètement indépendants de notre application. J'ai essayé avec "MockContext" aussi bien mais n'ai pas fonctionné pour moi. Eh bien c'est une très bonne question et mon impatient aussi pour ses réponses. Veuillez également poster votre recherche. –

+0

Vous pouvez utiliser JUnit4 avec MockWebServer https://github.com/square/okhttp/tree/master/mockwebserver – FinalFive

Répondre

3

Voici quelques étapes pour vous que j'utilise:

  • Utilisez Mockito & junit4, bien sûr :)
  • j'évite les tests d'interface utilisateur pour ces cas
  • Passez votre api de mise à niveau en tant que paramètre une classe que vous voulez tester
  • Dans le test, créez un simulacre api de rattrapage, transmettez celui-ci comme paramètre afin de pouvoir choisir ce que vous voulez que votre "Api" retourne par exemple Objets ou erreurs (voir Mockito.when())
  • Utilisez le code TestSubscriber de RxJava pour tester une méthode, par ex. Observable<Location> getLocationFromApi()
  • Évitez les threads dans votre classe de test (par exemple, .observeOn(mainThread())). Si inévitable, utilisez awaitTerminalEvents dans TestSubscriber. S'il n'y a pas de terminal repenser même votre test

des Conseils généraux:

  • Essayez de modularisation votre code de sorte que chaque classe a quelques fonctionnalités -> plus facile à tester.
  • Soyez patient et ne vous attendez pas à écrire des tests, par ex. 5% de votre code en seulement une semaine :) C'est un processus lent quelle que soit la taille de l'équipe
+0

Merci pour vos étapes détaillées, je vais essayer :) – Eve