使用robolectric访问UI线程

时间:2014-01-06 20:11:54

标签: android multithreading runnable robolectric

我无法在robolectric(版本1.1)测试用例中获取主UI线程。我正在测试的应用方法有以下检查:

if (Thread.currentThread() != Looper.getMainLooper().getThread()) {
            throw new IllegalStateException(
                    "This method should be called from the Main UI Thread");
        }
    }

以下列方式调用时,此检查失败:

    @Test
public void maTest() {

    Runnable task = new Runnable() {

        @Override
        public void run() {

            adapter.testThreadPrecondition();

        }
    };

    new Handler(Looper.getMainLooper()).post(task);
}

还尝试了“runOnUiThread”,并且同样检查失败。到底是怎么回事?不同的主要掠夺者?

1 个答案:

答案 0 :(得分:0)

将检查looper线程是否是当前线程的代码放入方法中,比如base

然后,在单元测试中使用模拟框架,例如Mockitomock that method,以便成功返回。