Teste da barra de progresso no Android com Espresso
O fluxo de trabalho deve ser o seguinte:
Início da atividadeBarra de progresso visívelA solicitação de rede é acionada (o recurso inativo já está registrado para que o espresso saiba esperar por ele).A barra de progresso está ocultaO texto da rede é mostrado.Até este ponto, escrevi asserções para as etapas1, 3, 5 e funciona perfeitamente:
onView(withText("foo 1"))
.check(matches(isDisplayed()));
O problema é que eu não tenho idéia de como informar o espresso para verificar a visibilidade da barra de progressoantes o pedido é feito edepois de a solicitação é feita.
Considere oonCreate()
O método é o seguinte:
super.onCreate(...);
setContentView(...);
showProgressBar(true);
apiClient.getStuff(new Callback() {
public void onSuccess() {
showProgressBar(false);
}
});
Eu tentei o seguinte, mas não funciona:
// 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())));
A razão pela qual isso está acontecendo é porque, como o cliente está registrado como um recurso inativo, o café expresso espera até queocioso novamente antes de executar o primeiroonView(...progressbar...)...
então eu preciso de uma maneira de informar o café expresso para executar issoANTES indo para ocioso.
EDITAR: isso também não funciona:
idlingResource.registerIdleTransitionCallback(new IdlingResource.ResourceCallback() {
@Override
public void onTransitionToIdle() {
onView(withId(R.id.progress_bar))
.check(matches(isDisplayed()));
}
});