私はAndroidアプリの単体テストを書いていますが、コードは変更しないでください。 java.util.Timer
を使用してコードをテストする際に問題が発生しました。私はスケジュールされた時間まで待つ必要なしに、タスクを即座に実行させる方法を探しています。ローカルオブジェクトとして作成されているので、私はそれをMockitoと嘲笑することはできません。robolectric unit testアンドロイドタイマー
public void testedMethod() {
long time = 9999;
final Timer timer = new Timer()
timer.schedule(new TimerTask() {
@Override
public void run() {
//do stuff
}
}, time);
}
@Test
public void test() throws Exception {
testedObject.testedMethod();
Thread.sleep(10000);
//verify that stuff was done
}
私はRobolectric(3.1)を使用していますので、私はShadowLooper
とRobolectric
クラスのメソッドを使用してみましたが、無駄にしました。現在、私はThread.sleep()
を使用しなければなりませんが、それはむしろ非妥協です。
Handler
によってスケジュールランナブルを実行するためにShadowLooper.runToEndOfTasks()
を使用してのように、TimerTasks
を予定し実行するためのTimer
を強制する方法はありますか?