2013-08-16 8 views
13

Qualcuno ha avuto test di unità di scrittura di fortuna per AsyncTaskLoaders in Robolectric? Ho provato una versione modificata di questo example for AsyncTask, ma non presenta lo stesso comportamento. In particolare, onLoadFinished non viene mai chiamato. Esistono esempi utili per testare caricatori con Robolectric?Test di AsyncTaskLoaders con Robolectric

+1

Hai trovato una soluzione? – Kuno

+0

Purtroppo no. –

risposta

1

Non utilizzare i caricatori. Non sono facili da testare e sono strettamente collegati ai Frammenti e alle Attività che li utilizzano. Utilizzare invece RxJava Observables per i flussi di dati asincroni. È possibile disaccoppiare la pianificazione e testarli in modo sincrono nei test delle unità. È molto più pulito e molto più semplice.

+0

hai qualche esempio da condividere? Sto cercando in particolare la parte "scheduler di disaccoppiamento". Fai qualcosa di diverso nel tuo codice quando ti iscrivi come iniettando uno schedulatore comune? O c'è un metodo elegante che dice a Rxjava di eseguire tutto su un thread specificato? –

+0

Passo in una SchedulerFactory alle classi che ne hanno bisogno e in produzione restituisco gli scheduler asincroni (io, newThread, ecc.) Per le rispettive chiamate nei metodi factory, mentre in unit test tutte le chiamate restituiscono il thread corrente per tutti le chiamate. È possibile passare uno scheduler a un osservabile. –

0

Ho appena pubblicato un modo ho ottenuto di lavorare in questo biglietto stack: Testing a CursorLoader with Robolectric & Mockito

Coinvolge scrivendo un paio di lezioni di ombra in più. Posso incollare la correzione qui se richiesto ma non ero sicuro di quale fosse la convenzione per una risposta duplicata.