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()));
        }
    });

questionAnswers(4)

yourAnswerToTheQuestion