android – Can't subscribe on a RxJava 2 Observable with TestSubscriber-ThrowExceptions

Exception or error:

Why is my compiler not allowing myself to subscribe on an Observable with a TestSubscriber?

Here’s my code:

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

And it’s saying that it can’t resolve method subscribe which is taking this parameter. But in all RxJava testing tutorials, they are using TestSubscriber without such problems. What can I do to test such Observable?

How to solve:

It is because *Subscriber are meant for Flowable while Observable uses the *Observer classes. This is because the reactive-streams standard reserves Subscriber for the fully compliant Publisher interface which Flowable implements.

Additionally with RxJava2 all reactive classes have a .test() method which will directly give you the appropriate testing object.

###

For RxJava 1 → RxJava 2 migration, I’ve just replaced TestSubscriber with TestObserver to make Observable#subscribe call compile and work.

Leave a Reply

Your email address will not be published. Required fields are marked *