2016-07-04 5 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

이 그것을 고정 , 동일한 문제가 있었다