[英]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.