przepływu pracy powinny być następujące:Testowanie pasek postępu na Androida z espresso
- Działalność rozpoczyna
- Pasek postępu jest widoczny
- żądania pożary sieciowe (resource biegu jałowym jest już zarejestrowany więc espresso umie czekać dla tego).
- Pasek postępu jest ukryty
- Wyświetlany jest tekst z sieci.
Do tego momentu, napisałem twierdzeń do stepów 1, 3, 5 i działa idealnie:
onView(withText("foo 1"))
.check(matches(isDisplayed()));
Problem jest, nie mam pojęcia, jak do niech espresso wiedzieć, aby zweryfikować widoczność paska postępu przed wniosek został złożony i po złożeniu wniosku.
rozważyć metodę onCreate()
jest następujący:
super.onCreate(...);
setContentView(...);
showProgressBar(true);
apiClient.getStuff(new Callback() {
public void onSuccess() {
showProgressBar(false);
}
});
Próbowałem następujących, ale to nie działa:
// 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())));
Powodem jest to dzieje się tak dlatego, ponieważ klient jest zarejestrowany jako zasób bezczynny, espresso poczeka, aż znowu będzie gotowe idle, zanim uruchomię pierwszą wersję , więc potrzebuję sposobu, aby powiadomić espresso o uruchomieniu tego PRZED będzie bezczynny.
EDIT: to nie działa albo:
idlingResource.registerIdleTransitionCallback(new IdlingResource.ResourceCallback() {
@Override
public void onTransitionToIdle() {
onView(withId(R.id.progress_bar))
.check(matches(isDisplayed()));
}
});
dobrze będzie musiał sprawdzić Twoją aktywność. Jeśli chcesz pozostać przy uruchomionych testach integracyjnych, będziesz musiał pozorować/zablokować swoje wywołania api. –
Aplikacja APi jest zgaszona i zarejestrowana jako zasób bezczynny. Nie o to pytam. –