如何访问Robolectric中的后台线程?

时间:2015-07-09 19:03:15

标签: multithreading robolectric

我在Robolectric跑步者中测试代码。正在测试的代码验证它没有在主线程上执行:

    if (Looper.getMainLooper().getThread() == java.lang.Thread.currentThread()) {
        new IllegalStateException("Method called on the UI thread");
    }

Robolectric测试提出了这个例外,我不想这样做。 我尝试从Robolectric.getBackgroundScheduler()运行代码,但我有例外。

我的测试如何在不同的线程中运行?

1 个答案:

答案 0 :(得分:0)

如注释中所建议,检查可以使用实用程序方法:

static void checkMainThread() {
  if (isRunningInRobolectric()) {
    return;
  }
  if (Looper.getMainLooper().getThread() == java.lang.Thread.currentThread()) {
    new IllegalStateException("Method called on the UI thread");
  }
}

static boolean isRunningInRobolectric() {
  return "robolectric".equals(Build.FINGERPRINT);
}