Café expresso: Por que os giradores não fecham após a seleção?

Tenho uma pergunta sobre a seleção de itens no Spinners com Espresso. Ou, para ser mais exato: a seleção funciona, mas depois disso as asserções de exibição falham porque o botão giratório ainda está aberto.

Digamos que eu tenha uma atividade realmente simples que contenha um botão giratório e uma exibição de texto que mostre a seleção, assim:

Agora, escrevi um teste do Espresso que seleciona 'cães' e verifica se a visualização de texto é atualizada de acordo:

@Test
public void selectDogs() throws Exception {
    onData(allOf(is(instanceOf(String.class)), is("dogs")))
            .inAdapterView(withId(R.id.spinner))
            .perform(click());
    onView(withId(R.id.selected)).check(matches(withText("dogs")));
}

Esse teste falha porque oonData()...perform(click()); não fecha o botão giratório, apenas o deixa aberto. Verificado através de depuração:

A exceção é:

android.support.test.espresso.NoMatchingViewException: No views in hierarchy found matching: with id: org.flinc.app:id/selected
If the target view is not part of the view hierarchy, you may need to use Espresso.onData to load it from one of the following AdapterViews:android.widget.ListPopupWindow$DropDownListView{226cb88 VFED.VC.. .F...... 0,0-231,432}

Eu posso (mais ou menos) corrigir meus testes adicionandopressBack() após a seleção do girador, mas para mim isso não pode ser a solução correta. Também causa problemas no emulador, mas parece funcionar bem no meu dispositivo. Como selecionar corretamente algo no botão giratório e depois fechá-lo?

Muito obrigado por ajudar!

Aqui está o código de atividade para referência:

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.test_spinner);

    Spinner spinner = (Spinner) findViewById(R.id.spinner);
    final TextView selected = (TextView) findViewById(R.id.selected);

    final List<String> items = Arrays.asList("cats", "dogs", "unicorns");
    final ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, items);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            selected.setText(items.get(position));
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {
            selected.setText("");
        }

    });
}

questionAnswers(1)

yourAnswerToTheQuestion