日々精進

新しく学んだことを書き留めていきます

RobolectricでExecutorServiceを使った非同期処理のテストを行う

またRobolectricのつらみ記事です。

非同期処理のテストを行う場合、Robolectric.runBackgroundTasks();を使ってBackgroundTaskを実行するが、ExecutorServiceを使って非同期にしている場合はrunBackgroundTasksが効かなかった。 ExecutorServiceのShadowとしてRobolectricBackgroundExecutorServiceが用意されており、そっちを使わないとrunBackgroundTasksが効かないっぽい。

非同期処理を実行する前にReflectionを使ってExecutorServiceオブジェクトをRobolectricBackgroundExecutorServiceオブジェクトに差し替えてやると動いた。

Robolectricつらい。。

参考: