2017-01-09 1 views
0

Je suis en train de tester mon application en utilisant Junit et Mackito, les méthodes de test est bien passé, mais pas avec les méthodes qui nécessitent des opérations réseau, comment les tester correctement, de sorte que l'assert est appelé après avoir récupéré des données du backend?Android méthodes de test MVP qui nécessite des opérations réseau

+1

mock les données dorsales. Ne pas vraiment contacter le backend –

+0

mais c'est une certaine logique dans le backend et je dois vérifier est que les résultats sont bons? –

+1

Vous pouvez jeter un oeil à cet exemple de projet http://github.com/mmirhoseini/marvel et cet article https://hackernoon.com/yet-another-mvp-article-part-1-lets-get-to- know-the-project-d3fd553b3e21 pour se familiariser avec MVP. –

Répondre

1

En général, vous devriez tester votre application, et non la logique côté serveur. Alors, faîtes juste des méthodes qui font des appels réseau.

Mais, si vous voulez tester la couche réseau de l'application elle-même, il est bon moyen, que je recommande, de le faire - WireMock

disant simplement qu'il crée localement qui webserver en cours d'exécution avec des réponses prédéfinies réponse.

1

Ce n'est pas une bonne idée de tester des méthodes qui dépendent des appels réseau. Mieux tester le backend et se moquer du client.

Quoi qu'il en soit, si vous voulez attendre l'utilisation des données: Thread.sleep(Xms) dans la méthode de test après l'appel réseau et avant que vos affirmations.

@Test 
public void testcase() throws InterruptedException { 
    // make actions and network call 

    // Wait, for example 2 seconds. It depends a lot of connection 
    Thread.sleep(2000); 

    // Then assert whatever you want 
} 
+1

Mauvaise idée d'utiliser 'Thread.sleep'. Tu ne devrais jamais faire ça. – Divers

+0

@Divers Comme je l'ai dit Dépens BEAUCOUP de temps de connexion et de qualité. Mais, y a-t-il une autre raison pour ne pas l'utiliser? Merci pour votre réponse. – adalPaRi

+0

Vous avez répondu à votre question - cela dépend de la connexion réseau, par conséquent votre test peut échouer simplement à cause d'une connexion lente, ce qui rend les tests inutiles. Même si vous voulez tester sur un serveur réel (ce qui est une mauvaise idée), il suffit de le tester sur JVM et de faire des requêtes réseau de manière synchrone. – Divers