2013-08-16 13 views
13

Hat jemand Glück gehabt, Komponententests für AsyncTaskLoaders in Robolectric zu schreiben? Ich habe versucht, eine modifizierte Version dieser example for AsyncTask, aber es zeigt nicht das gleiche Verhalten. Insbesondere wird onLoadFinished nie aufgerufen. Gibt es praktikable Beispiele zum Testen von Loadern mit Robolectric?AsyncTaskLoaders mit Robolectric testen

+1

Haben Sie eine Lösung gefunden? – Kuno

+0

Leider nicht. –

Antwort

1

Verwenden Sie keine Loader. Sie sind nicht einfach zu testen und sie sind eng mit den Fragmenten und Aktivitäten verbunden, die sie verwenden. Verwenden Sie stattdessen RxJava Observables für Ihre asynchronen Datenflüsse. Sie können die Planung entkoppeln und sie in Ihren Komponententests synchron testen. Es ist viel sauberer und viel einfacher.

+0

Haben Sie Beispiele zum Teilen? Ich suche speziell nach dem "entkoppelnden Scheduler" -Teil. Machen Sie etwas anders in Ihrem Code, wenn Sie einen gemeinsamen Scheduler abonnieren? Oder gibt es eine raffinierte Methode, die Rxjava anweist, alles in einem bestimmten Thread auszuführen? –

+0

Ich übergebe eine SchedulerFactory an die Klassen, die es benötigen, und in der Produktion gebe ich die asynchronen Scheduler (io, newThread usw.) für ihre jeweiligen Aufrufe in den Factory-Methoden zurück, während in Unit-Tests alle Aufrufe den aktuellen Thread zurückliefern die Anrufe. Sie können einen Scheduler an eine Observable übergeben. –

0

Ich habe gerade gebucht einen Weg Ich habe es in diesem Stapel Ticket zu arbeiten: Testing a CursorLoader with Robolectric & Mockito

Es geht um ein paar zusätzliche Schatten Klassen zu schreiben. Ich kann den Fix hier einfügen, wenn ich darum gebeten werde, aber ich war nicht sicher, was die Konvention für eine doppelte Antwort war.

Verwandte Themen