Sto tentando di utilizzare MVP per migliorare i test delle unità ed eseguire test più velocemente (perché sto testando la logica non il codice di Android, quindi evito di usare cose come RobotElectric).JUnit Scheduler che non dipende da Android
Ma sto usando RXAndroid e ha bisogno Looper per ottenere Schedulers.io()
e AndroidSchedulers.mainThread()
e quando provo a correre qualche volta come
class Phone {
public Observable<> sendSms(String number){
//...
}
}
Phone.getInstance().sendSms(phoneNumber)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(phone -> {
mView.dismissProgress();
mView.startCodeView(phone);
}, error -> {
mView.dismissProgress();
mView.showError(error);
});
ottengo:
Caused by: java.lang.RuntimeException: Method getMainLooper in android.os.Looper not mocked. See http://g.co/androidstudio/not-mocked for details.
at android.os.Looper.getMainLooper(Looper.java)
at rx.android.schedulers.AndroidSchedulers.<clinit>(AndroidSchedulers.java:27)
... 28 more
ho provato:
android {
// ...
testOptions {
unitTests.returnDefaultValues = true
}
}
Ma non funzionerà perché voglio eseguire test JUnit completi e non Robo roba elettrica o Espresso.
Come posso realizzarlo? c'è qualche schedulatore che non si bloccherà a causa di questo?
c'è qualche hook per Schedulers.io()? – Caipivara
C'è RxJavaPlugins.getInstance(). Register ...troppo :) – Caipivara
@danielgomezrico sì ma non l'ho usato però, se hai puoi inserire intuizione o modificare risposta –