### Question:
DefaultStorIOSQLite extends StorIOSQLite { @NonNull @Override public Flowable<Changes> observeChanges(@NonNull BackpressureStrategy backpressureStrategy) { final Flowable<Changes> rxBus = changesBus.asFlowable(); if (rxBus == null) { throw new IllegalStateException("Observing changes in StorIOSQLite requires RxJava"); } return rxBus; } protected  DefaultStorIOSQLite(
            @NonNull SQLiteOpenHelper sqLiteOpenHelper,
            @NonNull TypeMappingFinder typeMappingFinder,
            @Nullable Scheduler defaultRxScheduler,
            @NonNull List<Interceptor> interceptors); @NonNull @Override Flowable<Changes> observeChanges(@NonNull BackpressureStrategy backpressureStrategy); @Override @NonNull Flowable<Changes> observeChangesInTables(@NonNull final Set<String> tables, @NonNull BackpressureStrategy backpressureStrategy); @Override @NonNull Flowable<Changes> observeChangesOfTags(@NonNull final Set<String> tags, @NonNull BackpressureStrategy backpressureStrategy); @Override Scheduler defaultRxScheduler(); @NonNull @Override LowLevel lowLevel(); @NonNull @Override List<Interceptor> interceptors(); @Override void close(); @NonNull static Builder builder();  }### Answer:
@Test public void observeChangesShouldThrowIfRxJavaNotInClassPath() throws NoSuchFieldException, IllegalAccessException { ChangesBus<Changes> changesBus = mock(ChangesBus.class); setChangesBus(storIOSQLite, changesBus); expectedException.expect(IllegalStateException.class); expectedException.expectMessage("Observing changes in StorIOSQLite requires RxJava"); expectedException.expectCause(nullValue(Throwable.class)); storIOSQLite.observeChanges(LATEST); }