Robolectric Run Handler帖子

Owl*_*eau 11 android handler robolectric

我在Handler使用Robolectric 测试代码时遇到了麻烦.例如:

public class Client {
  private Handler mMainThreadHandler;

  public interface Callback{
    void ok();
  }

  public Client() {
    mMainThreadHandler = new Handler(Looper.getMainLooper());
  }

  public void doSomeStuff(Callback callback){
    //doing...
    mMainThreadHandler.post(new Runnable(){
      @Override public void run() {
        callback.ok();
      }
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

如何Runnable立即运行代码?它在我的测试完成执行之前没有运行.

kro*_*kin 11

对于Robolectric 3.0版,您应该使用: org.robolectric.Robolectric.flushForegroundThreadScheduler

org.robolectric.shadows.ShadowLooper.runUiThreadTasks
org.robolectric.shadows.ShadowLooper.runUiThreadTasksIncludingDelayedTasks

参考:2.4到3.0升级指南


Eug*_*nov 8

我认为这应该是一份工作:

Robolectric.runUiThreadTasks();
Run Code Online (Sandbox Code Playgroud)

或者如果安排了几项任务:

Robolectric.runUiThreadTasksIncludingDelayedTasks();
Run Code Online (Sandbox Code Playgroud)