Comment l'unité de test de Rénovation des appels d'api?
Je suis en train d'intégrer l'Unité des cas de test pour chaque morceau de code possible.
Mais je suis confronté à des problèmes lors de l'ajout des cas de test pour les appels d'api qui sont fait par le biais de rénovation.
JUnit compilateur ne s'exécute jamais le code dans les fonctions de Rappel.
Il y a une autre option est de prendre tous les appels d'api Synchrone pour fins de test, mais ce n'est pas possible pour tous les cas dans mon application.
Comment puis-je régler cette question? J'ai du ajouter des cas de test dans les appels d'api par tous les moyens.
Vous devez vous connecter pour publier un commentaire.
Je test mon Rénovation des rappels à l'aide de Mockito, Robolectric et Hamcrest bibliothèques.
Tout d'abord, définir lib de pile dans le module de génération.gradle:
À jour globale d'un projet de construction.gradle ajoutez la ligne suivante à buildscript dépendances:
Puis saisissez "Construire des Variantes" du menu d'Android Studio (rapidement le trouver, appuyez sur Ctrl+Maj+A et de recherche pour elle), et de passer "le Test de l'Artefact" option "Tests Unitaires". Android studio de passer votre test dossier "com.votre.paquet (d'essai)" (au lieu de androidTest).
Ok. Set-up est fait, le temps d'écrire quelques tests!
Disons que vous avez une certaine modernisation des appels api pour récupérer une liste d'objets qui doivent être mis dans une carte pour un RecyclerView etc. Nous aimerions tester si la carte se remplit avec les éléments appropriés sur l'aboutissement de l'appel.
Pour ce faire, nous allons avoir besoin de passer votre Rénovation implémentation de l'interface que vous utilisez pour faire des appels avec un simulacre, et faire des fausses réponses profitant de Mockito ArgumentCaptor classe.
Procéder à l'essai par un clic droit de la classe de test et de frapper exécuter.
Et c'est tout. Je suggère fortement à l'aide de Robolectric (avec robolectric plugin gradle) et Mockito, ces libs faire tester des applications android whole lotta plus facile.
J'ai appris cette méthode à partir de la suite de post de blog. Reportez-vous également à cette réponse.
Mise à jour: Si vous utilisez la Rénovation de l'RxJava, découvrez mon autre réponse sur ce trop.
Si vous utilisez .execute() au lieu de .enqueue() il rend l'exécution synchrone, donc le test a couru correctement sans la nécessité de l'importation de 3 différents types de bibliothèques et d'ajouter un code ou de modifier le build variantes.
Comme:
Le framework JUnit jamais exécute le code dans les fonctions de Rappel parce que le thread principal de l'exécution se termine avant que la réponse est extrait. Vous pouvez utiliser
CountDownLatch
comme indiqué ci-dessous:Ce l'échantillon d'essai peut être utile aussi.
si déjà encapsulation retrofit2.0 avec rx restful
et le serveur demande d'api comme
votre appel de service à l'arrière d'une requête de synchronisation Observables