如果在Activity' onCreate中启动了长时间运行的任务,则Espresso空闲资源无法正常工作?

时间:2015-06-21 18:53:31

标签: android integration-testing android-testing android-espresso android-uiautomator

如果在Activity' onCreate中启动了长时间运行的任务,如何使用espresso空闲资源?

我创建了一个自定义IdlingResource,如果click异步方法调用是由click事件触发的,它可以正常工作,但只要在Acitivty的onCreate方法中调用它就会中断。

示例:

public void onBtnClick(){
    setIdle(true); // This works fine, our tests wait until setIdle(false) is called
    doSomeBackgroundTask(); 
}

public void onDone(){
    setResourceIdle(false);
    setIdle(false);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setIdle(true); // This doesn't work, our tests won't wait
    doSomeBackgroundTask(); 
}

有什么想法可以克服这种情况吗?

1 个答案:

答案 0 :(得分:4)

尝试在活动onCreate之前注册idlingResource。

简单的@Before方法就足够了。

如果您使用的是espresso规则,您还可以实施自己的ActivityRule并覆盖beforeActivityLaunched()方法

或者如果你想在Application oncreate之前执行任何代码,你需要实现自己的testrunner并覆盖callApplicationOnCreate()

此处显示测试规则的示例: ActivityTestRule - how to call code before Application's onCreate