【发布时间】:2014-10-17 16:14:39
【问题描述】:
我有一个启动 secondActivity 的 firstActivity,在 secondActivity 中我有一个加载对话框(不是 AsyncTask),我需要让 Espresso 等到对话框消失后再继续测试。
我必须在哪里实施 IdlingResource?如何让它等待dismissDialog() 函数?
这是我尝试做的:
class DocumentLoadingIdlingResource implements IdlingResource {
private ResourceCallback callback;
@Override
public String getName() {
return "Documnet loading idling resource";
}
@Override
public boolean isIdleNow() {
Activity activity;
try {
activity = getCurrentActivity();
} catch (Throwable e) {
return false;
}
if(activity.getClass().getName().equals(EditorActivity.class.getName())
&& activity.loadingDialogShowing() == false) {
return false;
}
return true;
}
@Override
public void registerIdleTransitionCallback(ResourceCallback callback) {
this.callback = callback;
}
}
Activity getCurrentActivity() throws Throwable {
getInstrumentation().waitForIdleSync();
final Activity[] activity = new Activity[1];
runTestOnUiThread(new Runnable() {
@Override
public void run() {
java.util.Collection<Activity> activites = ActivityLifecycleMonitorRegistry.getInstance().getActivitiesInStage(Stage.RESUMED);
activity[0] = com.google.common.collect.Iterables.getOnlyElement(activites);
}});
return activity[0];
}
这个类在测试类中实现。
【问题讨论】: