Android JUnit тест блокирует бесконечно, когда Observable наблюдается на AndroidSchedulers.mainThread ()

Я пишу простой тест, который эквивалентен:

Test fun testObservable() { val returnedObservable = Observable.create(object : Observable.OnSubscribe<String> { override fun call(t: Subscriber<in String>) { t.onNext("hello") t.onCompleted() } }).subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) val result = returnedObservable.toBlocking().first() assertEquals("hello", result) } 

Тест блокируется бесконечно на .observeOn(AndroidSchedulers.mainThread()) когда присутствует .observeOn(AndroidSchedulers.mainThread()) .

Есть ли способ преобразовать наблюдаемый, чтобы вернуть результат?

returnedObservable свойство возвращается из вызова метода с использованием .subscribeOn и .observeOn, поэтому удаление этих параметров не является вариантом.

Я думаю, это ошибка, упомянутая здесь: https://github.com/ReactiveX/RxAndroid/issues/50

Кстати, почему вы не используете RxKotlin ?

Вы, например, будете выглядеть намного лучше:

  val returnedObservable = observable<String> { subscriber -> subscriber.onNext("hello") subscriber.onCompleted() } .subscribeOn(Schedules.io()) .observeOn(AndroidSchedulers.mainThread()) 
Intereting Posts
Как получить вход от пользователя в Android Studio в числовом значении и преобразовать его в переменную int в kotlin? Как установить статическое свойство в классе в Kotlin для Javascript генерации котлина в KFunction1 Почему не используется Intellij Idea Console для пользовательского ввода Как получить страну пользователя для HTTP-запроса в бэкэнд? BottomSheetCallback из модального нижнего листа Связанная ссылка на вызов не работает с реактором Подписаться Можем ли мы достичь безопасности типа компиляции для объединения типов, которые мы не можем контролировать? Плагин android studio с id: 'kotlin-android-extensions' Джексон @JsonAppend со значением по умолчанию Kotlin – «Не волнует» в обесцвечивании класса данных Не удалось установить град для Android 3.0 версия kotlin, которая используется для построения с градиентом (1.1.2-5), отличается от той, что включена в плагин IDE (1.1.2-4) Литеральный синтаксис класса для параметризованных классов в Котлине Могу ли я использовать два xml-макета для использования одного и того же зрителя с использованием синтетических расширений Kotlin?