如何在Android中的Roboelectric中调用背景线程上的api

时间:2016-03-30 10:26:50

标签: android robolectric

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

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

Robolectric测试引发了这个例外,我不希望如此。我尝试从Robolectric.getBackgroundScheduler()运行代码,但我仍然得到例外。

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

1 个答案:

答案 0 :(得分:0)

测试多线程代码的主要思想是使其在一个线程上以受控方式运行。

我会做什么:

  1. 将检查代码移至某个类助手
  2. 在测试中注入并模拟它
  3. 这个解决方案的优点:

    1. 它将解决您的问题
    2. 它将删除重复并使您更接近SRP(单一责任原则)
    3. 劣势:

      1. 它需要正确的命名,因为它会隐藏方法
      2. 背后的功能
      3. 它将为您提供您可能不需要的额外灵活性
      4. 成功!