2015-08-20 5 views
6

Ich versuche, Android-App mit Espresso FW zu testen, und ich steckte auf das Problem mit Async-HTTP-Anfrage.Android + Espresso + asynchrone HTTP-Anfrage -> wie testen?

Wie kann ich den Fall testen, dass die App (Aktivität) auf die Verarbeitungsanforderung wartet und nach dem Empfang der Antwort die nächste Aktivität mit dem Ergebnis oder der Fehlermeldung angezeigt wird?

Ich habe versucht, irgendeine Lösung zu finden, wie man es in der Espresso mit Tests gegen die Daten vom Testserver macht, aber ohne Glück.

Vielen Dank für jeden Hinweis, Beispiel oder Link.

Antwort

0

Ich denke, das Problem liegt in der App-Architektur. Sie sollten eine Dependency Injection-Bibliothek verwenden, um einen Testdienst mit Scheindaten in Ihrer Anwendung im Testmodus zu injizieren. Wenn Sie "Test" -Implementierung (Mocks) beim Testen injizieren. Sie vermeiden Probleme mit der Netzwerkverfügbarkeit oder Sie können die Netzwerkverfügbarkeit durch Ihre Testimplementierung simulieren.

+0

Können Sie ein Beispiel dafür? Ich möchte auf realen Serverdaten testen, aber wenn es nicht möglich ist, werde ich einige Scheindaten verwenden. – redrom

+0

@mariopce: kannst du mir dabei helfen? wie man das einrichtet. Gibt es dafür Bibliotheken? Ich stecke darin fest. Bitte hilf mir. –

+0

Ich akzeptiere das nicht. Obwohl Sie wahrscheinlich auch Tests mit Mocks durchführen sollten, wie Sie es beschreiben, gibt es gute Gründe dafür, einen Live-Service zu testen. – aaronmarino

1

Ich kämpfte damit für ein paar Tage. Wenn Ihre App Nachrüstung ist mit HTTP-Anfragen zu behandeln, können Sie diese eine Zeile hinzufügen:

.setExecutors(AsyncTask.THREAD_POOL_EXECUTOR, new MainThreadExecutor()) 

zu Ihrem RestAdaptor.Builder. Dadurch werden alle HTTP-Anforderungen in den AsyncTasks-Pool verschoben, der dann von espresso verarbeitet wird.

Ich habe die ursprüngliche Antwort hier gefunden: http://www.michaelevans.org/blog/2015/08/03/using-espresso-for-easy-ui-testing/

Verwandte Themen