Robolectric不执行Runnable

Robolectric does not execute Runnable

Robolectric (3.1) 应该可以执行发布到处理程序的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]);
}

断言测试失败。我错过了什么吗?

如有任何帮助,我们将不胜感激。

@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]);
}

有同样的问题, 这修复了它:

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