Skip to content

Instantly share code, notes, and snippets.

@kaushikgopal
Created July 8, 2016 16:50
Show Gist options
  • Star 11 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save kaushikgopal/b680b69953cc5a5692581f69b8c9c65c to your computer and use it in GitHub Desktop.
Save kaushikgopal/b680b69953cc5a5692581f69b8c9c65c to your computer and use it in GitHub Desktop.
Lazy man's RxJava Espresso Scheduler Hooks
public class RxSchedulerHook {
private ISRxSchedulerHook() {
// no instances
}
/**
* this makes sure that when we run the tests all of RxJava
* operates on a single thread (Scheduler.immediate)
*/
public static void registerHooksForTesting() {
RxJavaPlugins.getInstance().registerSchedulersHook(new RxJavaTestSchedulerHook());
//RxAndroidPlugins.getInstance().registerSchedulersHook(new RxAndroidTestSchedulerHook());
}
static class RxAndroidTestSchedulerHook
extends RxAndroidSchedulersHook {
// we use the async task scheduler because Espresso already knows how to handle this executor :D
@Override
public Scheduler getMainThreadScheduler() {
return Schedulers.from(AsyncTask.THREAD_POOL_EXECUTOR);
}
}
static class RxJavaTestSchedulerHook
extends RxJavaSchedulersHook {
// we use the async task scheduler because Espresso already knows how to handle this executor :D
@Override
public Scheduler getComputationScheduler() {
return Schedulers.from(AsyncTask.THREAD_POOL_EXECUTOR);
}
@Override
public Scheduler getIOScheduler() {
return Schedulers.from(AsyncTask.THREAD_POOL_EXECUTOR);
}
@Override
public Scheduler getNewThreadScheduler() {
return Schedulers.from(AsyncTask.THREAD_POOL_EXECUTOR);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment