Java Rx async未执行
希望使用RxJava执行异步请求。但是可以执行请求。add()。你能帮我递一下这个junit吗Java Rx async未执行,java,rx-java,Java,Rx Java,希望使用RxJava执行异步请求。但是可以执行请求。add()。你能帮我递一下这个junit吗 public class Rizze_debug_Rxjava_Test extends METRICS_JUNIT{ @Test public void testR2_JEOR(){ logger.info("trace 1 "); Observable<String> obs = Observable.create
public class Rizze_debug_Rxjava_Test extends METRICS_JUNIT{
@Test
public void testR2_JEOR(){
logger.info("trace 1 ");
Observable<String> obs = Observable.create((Subscriber<? super String> s) -> {
try {
logger.info("//processsing");
Request.add();
} catch (Exception e) {
e.printStackTrace();
s.onError(e);
}
logger.info("//done");
s.onNext("done");
s.onCompleted();
});
logger.info("trace 2");
obs.subscribeOn(Schedulers.io());
assertEquals(1,Request.i);
logger.info("trace 3");
}
public static class Request{
public static int i =0;
public static void add(){
i++;
}
}
}
公共类Rizze\u debug\u Rxjava\u Test扩展了度量{
@试验
公共无效测试2u JEOR(){
logger.info(“跟踪1”);
Observable obs=Observable.create((订户我们必须订阅()才能运行它:
public class Rizze_debug_Rxjava_Test extends METRICS_JUNIT {
@Test
public void testR2_JEOR() {
logger.info("trace 1 ");
Observable<String> obs = Observable.create((Subscriber<? super String> s) -> {
try {
logger.info("//processsing");
Request.add();
} catch (Exception e) {
e.printStackTrace();
s.onError(e);
}
logger.info("//done");
s.onNext("done");
s.onCompleted();
});
logger.info("trace 2");
obs.subscribeOn(Schedulers.io()).subscribe();
assertEquals(1, Request.i);
logger.info("trace 3");
}
public static class Request {
public static int i = 0;
public static void add() {
i++;
}
}
}
公共类Rizze\u debug\u Rxjava\u Test扩展了度量{
@试验
公共无效测试2u JEOR(){
logger.info(“跟踪1”);
Observable obs=Observable.create((订阅方这样的Observable本身只是描述您想要执行的异步处理管道。它是一个冷的Observable,在有订阅之前它不会开始发送数据,所以您需要调用订阅的一种形式或另一种形式
注意,在这里,订阅后的发布速度会非常快,因为它基本上在订阅时执行循环,但是对于可以延迟发布项目的真正异步进程,这种方法只是调用subscribe()
将不起作用,因为控件将立即返回到测试中的下一行,该行可能在异步处理发生之前终止
对于这些情况,有一个特殊的订户
,TestSubscriber
,它将允许您阻止测试,直到可观察到的完成或错误,然后断言排放/错误。您应该查看它