以下是在Android模拟器上工作的代码片段,但在Junit测试中不起作用。
public void startObserving() {
Observable.just(1, 2, 3, 40)
.doOnNext(integer -> System.out.println("doOnNext item " + integer + " on: " + Thread.currentThread().getName()))
.subscribeOn(Schedulers.computation())
.observeOn(Schedulers.single())
.subscribe(integer -> System.out.println("Consuming item " + integer + " on: " + Thread.currentThread().getName()));
}
当我在Android Emulator上运行这个方法时,doOnNext()和subscribe()中的日志被打印出来,但当我将它作为JUnit测试运行时,却没有打印出来。你们这些了不起的人能不能给我解释一下我错过了什么。
发布于 2018-06-03 07:19:45
请记住,您正在处理异步代码。在订阅实际发生之前,测试一直运行到完成。添加睡眠语句可以验证这一点:
@Test
public void startObserving() throws Exception {
Observable.just(1, 2, 3, 40)
.doOnNext(integer -> System.out.println("doOnNext item " + integer + " on: " + Thread.currentThread().getName()))
.subscribeOn(Schedulers.computation())
.observeOn(Schedulers.single())
.subscribe(integer -> System.out.println("Consuming item " + integer + " on: " + Thread.currentThread().getName()));
Thread.sleep(3000);
}
希望这能有所帮助!
https://stackoverflow.com/questions/50661908
复制相似问题