рабочего процесса, должны быть следующие:Testing прогресс бар на Android с Espresso
- активность начинается
- Прогресс бар видна
- запрос сети пожаров (на холостом ходу ресурс уже зарегистрирован поэтому эспрессо умеет ждать для этого).
- Индикатор прогресса скрыт
- Отображен текст из сети.
До этого момента, я написал утверждения для шагов 1, 3, 5 и она прекрасно работает:
onView(withText("foo 1"))
.check(matches(isDisplayed()));
Проблема, я понятия не имею, как позволить эспрессо знать, чтобы проверить видимость индикатора выполнения до запрос сделан и после запрос сделан.
Рассмотрим метод onCreate()
заключается в следующем:
super.onCreate(...);
setContentView(...);
showProgressBar(true);
apiClient.getStuff(new Callback() {
public void onSuccess() {
showProgressBar(false);
}
});
Я попытался следующие, но это не работает:
// Activity is launched at this point.
activityRule.launchActivity(new Intent());
// Up to this point, the request has been fired and response was
// returned, so the progress bar is now GONE.
onView(withId(R.id.progress_bar))
.check(matches(isDisplayed()));
onView(withId(R.id.progress_bar))
.check(matches(not(isDisplayed())));
Причина это происходит потому, что, так как клиент зарегистрированный как ресурс холостого хода, эспрессо будет ждать до тех пор, пока он не будет idle еще раз перед запуском первого onView(...progressbar...)...
, поэтому мне нужно, чтобы эспрессо знал, что нужно запустить этот ПЕРЕД собирается простаивать.
EDIT: это не работает либо:
idlingResource.registerIdleTransitionCallback(new IdlingResource.ResourceCallback() {
@Override
public void onTransitionToIdle() {
onView(withId(R.id.progress_bar))
.check(matches(isDisplayed()));
}
});
Ну ты вам нужно будет проверить свою активность. Если вы хотите придерживаться текущих интеграционных тестов, вам нужно будет высмеять/закрыть ваши вызовы api. –
. Api уже закодирован и зарегистрирован как ресурс бездействия. Я не об этом спрашиваю. –