Observable.Interval、"Context has changed" 错误的 RxJava 单元测试

RxJava Unit Testing for Observable.Interval, "Context has changed" error

我正在尝试为下面的代码块编写单元测试:

Observable.interval(INITIAL_DELAY, REFRESH_PERIOD, TimeUnit.SECONDS)
            .flatMap {thisMethodReturnsAnObservable()}
            .subscribeOn(Schedulers.io()) 
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(this::onDataLoaded, this::onError)
            .disposeLater()) 

我有一个测试规则可以用 testSchedulers 覆盖 RxSchedulers。

重要 测试可以 运行 一个一个地进行,但不能一起进行,而且 运行 覆盖被破坏并出现同样的错误。

我得到的错误是,当调试器点击 onDataLoaded 方法时,测试的 运行ning 立即停止,并显示以下消息:

默认情况下,Observable.interval 在计算调度程序上运行。因此,您需要使用带调度程序的 Observable.interval 的重载或将 Schedulers.computation 添加到您的测试规则中。

Observable.interval(INITIAL_DELAY, REFRESH_PERIOD, TimeUnit.SECONDS, [Your scheduler here])

Observable.interval documentation

将 ComputationSchedulerHandler 添加到我的测试规则解决了我的问题。