Я пытаюсь использовать MVP для повышения модульного тестирования и выполнения тестов быстрее (потому что я тестирую логику, а не код Android, поэтому я избегаю использования таких вещей, как RobotElectric).JUnit Scheduler, который не зависит от Android
Но I'm с помощью RXAndroid и ему нужно Looper, чтобы получить Schedulers.io()
и AndroidSchedulers.mainThread()
и когда я пытаюсь запустить когда-нибудь, как
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);
});
я получаю:
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
Я пробовал:
android {
// ...
testOptions {
unitTests.returnDefaultValues = true
}
}
Но это не сработает, потому что я хочу запускать полные тесты JUnit, а не Robo электрический или эспрессо.
Как это сделать? есть ли какой-нибудь Планировщик, который не потерпит краха из-за этого?
есть ли какой-нибудь крючок для Schedulers.io()? – Caipivara
Есть RxJavaPlugins.getInstance(). Register ...тоже :) – Caipivara
@ danielgomezrico да, но я не использовал его, хотя, если у вас есть возможность вывести прозрение или отредактировать ответ –