web-dev-qa-db-ja.com

TestSubscriberで監視可能なRxJava2でサブスクライブできません

コンパイラがTestSubscriberを使用してObservableをサブスクライブできないのはなぜですか?

これが私のコードです:

TestSubscriber<User> testSubscriber = new TestSubscriber<>();
Observable.just(new User()).subscribe(testSubscriber);

そして、このパラメータを取っているメソッドsubscribeを解決できないと言っています。しかし、すべてのRxJavaテストチュートリアルでは、そのような問題なしにTestSubscriberを使用しています。そのようなObservableをテストするにはどうすればよいですか?

20
WWJD

これは、_*Subscriber_がFlowableを対象としているのに対し、Observableは_*Observer_クラスを使用しているためです。これは、reactive-streams標準がSubscriberが実装する完全準拠のPublisherインターフェース用にFlowableを予約しているためです。

さらに、RxJava2では、すべてのリアクティブクラスに.test()メソッドがあり、適切なテストオブジェクトを直接提供します。

19
Kiskae

RxJava1→RxJava2の移行では、TestSubscriberTestObserverに置き換えてObservable#subscribecompileを呼び出して動作します。

1
Dmitriy Popov