MVP'yi ünite testini geliştirmek ve testleri daha hızlı çalıştırmak için kullanıyorum (çünkü robotik mantığı test etmiyorum, böylece RobotElectric gibi şeyleri kullanmaktan kaçınıyorum).JUnit Zamanlayıcı, Android'e bağımlı değildir.
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
Denedim: Bir ara gibi
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);
});
çalıştırmayı denediğinizde Schedulers.io()
ve AndroidSchedulers.mainThread()
almak ve RXAndroid ve ihtiyacı olan Looper kullanılarak
Ama Lafınızı olsun
android {
// ...
testOptions {
unitTests.returnDefaultValues = true
}
}
Ancak bu işe yaramaz çünkü tam JUnit testleri çalıştırmak istiyorum ve Robo değil elektrik veya Espresso şeyler.
Bunu nasıl yapabilirim? bunun yüzünden çökmeyecek herhangi bir Zamanlayıcı var mı?
Schedulers.io() için herhangi bir kanca var mı? – Caipivara
RxJavaPlugins.getInstance() kayıtlıdır ...çok :) – Caipivara
@danielgomezrico evet ama bunu kullanmamıştım, eğer bir fikir verebilir ya da cevabı düzenleyebilir misin –