2013-08-16 3 views
13

Est-ce que quelqu'un a eu de la chance en écrivant des tests unitaires pour AsyncTaskLoaders dans Robolectric? J'ai essayé une version modifiée de ce example for AsyncTask, mais il n'a pas le même comportement. En particulier onLoadFinished n'est jamais appelé. Existe-t-il des exemples pratiques pour tester les chargeurs avec Robolectric?Test de AsyncTaskLoaders avec Robolectric

+1

Avez-vous trouvé une solution? – Kuno

+0

Malheureusement pas. –

Répondre

1

N'utilisez pas de chargeurs. Ils ne sont pas faciles à tester, et ils sont étroitement liés aux fragments et aux activités qui les utilisent. Utilisez plutôt RxJava Observables pour vos flux de données asynchrones. Vous pouvez découpler la planification et la tester de manière synchrone dans vos tests unitaires. C'est beaucoup plus propre et beaucoup plus simple.

+0

avez-vous des exemples à partager? Je cherche spécifiquement la partie "découplage du planificateur". Est-ce que vous faites quelque chose différemment dans votre code en vous inscrivant comme injecter un programmateur commun? Ou est-ce que la méthode nifty dit juste à Rxjava d'exécuter tout sur un thread spécifié? –

+0

Je passe une SchedulerFactory aux classes qui en ont besoin et en production je repasse les ordonnanceurs asynchrones (io, newThread, etc) pour leurs appels respectifs dans les méthodes d'usine, tandis que dans les tests unitaires tous les appels retournent le thread courant les appels. Vous pouvez passer un planificateur à un observable. –

0

Je viens de publier une manière que je l'ai eu à travailler dans ce billet pile: Testing a CursorLoader with Robolectric & Mockito

Il consiste à écrire un couple des classes d'ombre supplémentaires. Je peux coller le correctif ici si demandé mais je n'étais pas sûr de ce que la convention était pour une réponse en double.

Questions connexes