またRobolectricのつらみ記事です。
非同期処理のテストを行う場合、Robolectric.runBackgroundTasks();を使ってBackgroundTaskを実行するが、ExecutorServiceを使って非同期にしている場合はrunBackgroundTasksが効かなかった。 ExecutorServiceのShadowとしてRobolectricBackgroundExecutorServiceが用意されており、そっちを使わないとrunBackgroundTasksが効かないっぽい。
非同期処理を実行する前にReflectionを使ってExecutorServiceオブジェクトをRobolectricBackgroundExecutorServiceオブジェクトに差し替えてやると動いた。
Robolectricつらい。。
参考: