2016-07-04 9 views
1

Robolectric(3.1)はハンドラに送信された実行可能ファイルを実行できる必要があります。RobolectricはRunnableを実行しません

@Test 
public void shouldExecuteRunnable() throws Exception { 
    final CountDownLatch signal = new CountDownLatch(1); 
    final boolean[] result = {false}; 
    Runnable runnable = new Runnable() { 

     @Override 
     public void run() { 
      result[0] = true; 
      signal.countDown(); 
     } 
    }; 

    HandlerThread handlerThread = new HandlerThread("HandlerThread"); 
    handlerThread.start(); 
    Handler handler = new Handler(handlerThread.getLooper()); 
    handler.post(runnable); 

    Robolectric.flushBackgroundThreadScheduler(); 
    Robolectric.flushForegroundThreadScheduler(); 

    signal.await(5, TimeUnit.SECONDS); 

    Assert.assertTrue(result[0]); 
} 

アサーションでテストが失敗します。何か不足していますか?

ご協力いただければ幸いです。

 ShadowLooper threadShadow = shadowOf(thread.getLooper()); 
     threadShadow.runOneTask(); 

答えて

2
@Test 
public void shouldExecuteRunnable() throws Exception { 
    final boolean[] result = {false}; 

    Runnable runnable = new Runnable() { 

     @Override 
     public void run() { 
      result[0] = true; 
     } 
    }; 

    ShadowLooper.pauseMainLooper(); 

    Handler handler = new Handler(); 
    handler.post(runnable); 

    ShadowLooper.runMainLooperOneTask(); 

    Assert.assertTrue(result[0]); 
} 
0

これは、それを固定 、同じ問題を持っていました
関連する問題