2
respostas

[Dúvida] erro persistente no teste de ui

Olá, estou fazendo o curso de testes instrumentados no android e me vejo com um mesmo problema faz tempo:

One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts

Não sei se devo criar um BroadcastReceiver (se devo, qual intent tenho que filtrar? O que posso fazer?) ou se é outra coisa. Já me foi dito que eu tinha que colocar a anotação @BroadcastReceiver acima da minha classe, mas ela não existe. Alguém pode me ajudar?

Código do teste:


class ProdutoActivtyTest {

    @Test
    fun deveEncontrarNomeApp() {

        ActivityScenario.launch(ListaProdutosActivity::class.java)
        Espresso
            .onView(ViewMatchers.withText("Orgs"))
            .check(ViewAssertions.matches(ViewMatchers.isDisplayed()))
    }

}
2 respostas

E aí! Beleza?

A mensagem diz que ou você especifica RECEIVER_EXPORTED ou RECEIVER_NOT_EXPORTED quando um receiver não está sendo registrado exclusivamente para broadcasts do sistema. Ou seja, precisa definir se seu BroadcastReceiver pode ser usado por outras apps (RECEIVER_EXPORTED) ou se é exclusivo do seu app (RECEIVER_NOT_EXPORTED).

E essa anotação @BroadcastReceiver que falaram pra usar... Pode ser que seja algo específico do curso ou que tenha mudado, porque, até onde eu sei, não existe essa anotação padrão no Android.

Quanto ao teu código de teste, parece que tá tudo tranquilo. Ele está lançando a ListaProdutosActivity e verificando se o texto "Orgs" está sendo exibido. Nada de errado por aqui.

Voltando ao problema do BroadcastReceiver, tenta dar uma olhada no código onde você está usando isso. Pode ser que esteja faltando alguma configuração ou algo do tipo. Se não tiver um BroadcastReceiver explicito no teu código, talvez seja algo no código da biblioteca ou framework que você está usando no teste.

Espero que essa luzinha ajude a clarear as coisas

Oi, boa tarde

Eu não declarei nenhum BroadcastReceiver, acha que devo criar um? A Exception aponta o erro para a linha ActivityScenario.launch(ListaProdutosActivity::class.java), tem alguma boa informação que posso tirar disso?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software