Ich versuche MVP zu verwenden, um Komponententests zu verbessern und Tests schneller auszuführen (weil ich Logik nicht android Code teste, also vermeide ich Sachen wie RobotElectric zu verwenden).JUnit Scheduler, der nicht von Android abhängig ist
Aber ich bin mit RXAndroid und es braucht Looper Schedulers.io()
und AndroidSchedulers.mainThread()
zu bekommen und wenn ich versuche, irgendwann wie
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);
});
ich zu laufen bekommen:
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
Ich habe versucht:
android {
// ...
testOptions {
unitTests.returnDefaultValues = true
}
}
Aber es wird nicht funktionieren, weil ich volle JUnit-Tests und nicht Robo ausführen möchte Elektro- oder Espresso-Zeug.
Wie kann ich es erreichen? Gibt es einen Scheduler, der deswegen nicht abstürzt?
Gibt es einen Haken für Schedulers.io()? – Caipivara
Es gibt RxJavaPlugins.getInstance(). Registrieren ...auch :) – Caipivara
@danielgomezrico ja, aber ich habe es noch nicht verwendet, wenn Sie haben, können Sie Einblick setzen oder Antwort bearbeiten –