Ich versuche, die folgende RxKotlin/RxJava 2 Code zu testen:RxJava 2 übergeordnete IO-Scheduler in Unit-Test
validate(data)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.flatMap { ... }
Ich versuche, die Disponenten außer Kraft zu setzen, wie folgt:
// Runs before each test suite
RxJavaPlugins.setInitIoSchedulerHandler { Schedulers.trampoline() }
RxAndroidPlugins.setInitMainThreadSchedulerHandler { Schedulers.trampoline() }
ich erhalte jedoch die folgende Fehlermeldung, wenn die Durchführung des Tests:
java.lang.ExceptionInInitializerError
...
Caused by: java.lang.NullPointerException: Scheduler Callable result can't be null
at io.reactivex.internal.functions.ObjectHelper.requireNonNull(ObjectHelper.java:39)
at io.reactivex.plugins.RxJavaPlugins.applyRequireNonNull(RxJavaPlugins.java:1317)
at io.reactivex.plugins.RxJavaPlugins.initIoScheduler(RxJavaPlugins.java:306)
at io.reactivex.schedulers.Schedulers.<clinit>(Schedulers.java:84)
Hat jemand dieses Problem erfahren?
Der Test funktionierte gut, wenn RxKotlin/RxJava 1 und die folgenden Scheduler überschreibt mit:
Dank!
Siehe das aktualisierte Javadoc für 2.0.8: http://reactivex.io/RxJava/2.x/ javadoc/io/reactivex/schedulers/Schedulers.html # io() – akarnokd
Insbesondere "Beachten Sie, dass aufgrund der möglichen Initialisierungszyklen, mit einer der anderen Scheduler-Rückgabe-Methoden zu einer NullPointerException führen." – Kiskae
"Sobald die Schedulers-Klasse initialisiert wurde, können Sie die zurückgegebene Scheduler-Instanz über die RxJavaPlugins.setIOSchedulerHandler (io.reactivex.functions.Function) -Methode überschreiben." – akarnokd