繁体   English   中英

使用单线程调度程序时,RxJava CombineLatest的单元测试会挂起

[英]Unit test of RxJava combineLatest hangs when single thread scheduler is used

我正在尝试为使用CombineLatest的函数编写单元测试。这是测试的简化版本:

@Test
public void testCombined() {
    RxJavaPlugins.getInstance().registerSchedulersHook(new RxJavaSchedulersHook() {
        @Override
        public Scheduler getIOScheduler() {
            return Schedulers.immediate();
        }

        @Override
        public Scheduler getNewThreadScheduler() {
            return Schedulers.immediate();
        }

        @Override
        public Scheduler getComputationScheduler() {
            return Schedulers.immediate();
        }
    });

    Observable<String> observable1 = Observable.just("hello");
    Observable<String> observable2 = Observable.just("world");

    Observable<String> combined = Observable.combineLatest(observable1, observable2, (s1, s2) -> s1 + s2);
    String result = combined.toBlocking().first();
    System.out.println( result);
}

该测试用例在执行时挂起。 如果我删除了调度程序挂钩,它将正常运行。 知道为什么是这种情况,如何解决该问题?

这是RxJava中的一个已知异常 :如果将计算调度程序替换为立即调度程序,则某些内部管理将阻止运行任何内容。

该修复程序将是1.1.6的一部分-我希望它会在2周内发布。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM