2
respostas

[Dúvida] erro ao executar teste

Olá

Quando fui executar o teste pra ver se havia o nome do app na activity, o android studio reclamou com um erro:

java.lang.SecurityException: br.com.alura.orgs: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts
at br.com.alura.orgs.ProdutoActivtyTest.deveEncontrarNomeApp(ProdutoActivtyTest.kt:16)

codigo do teste:

class ProdutoActivtyTest {

    @Test
    fun deveEncontrarNomeApp() {

        ActivityScenario.launch(ListaProdutosActivity::class.java) // Linha de código identificada com erro
        Espresso
            .onView(ViewMatchers.withText("Orgs"))
            .check(ViewAssertions.matches(ViewMatchers.isDisplayed()))
    }

}
2 respostas

Olá Juan!

O erro que você está enfrentando ocorre devido a uma exceção de segurança no seu teste instrumentado. O erro específico diz que você precisa especificar uma das opções RECEIVER_EXPORTED ou RECEIVER_NOT_EXPORTED quando um receptor não está sendo registrado exclusivamente para transmissões do sistema.

Para corrigir esse erro, você pode adicionar a anotação @BroadcastReceiver ao seu teste. Essa anotação permite que você especifique se o receptor está sendo exportado ou não. Por exemplo:

@BroadcastReceiver
class ProdutoActivtyTest {

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

}

Dessa forma, você estará especificando que o receptor não está sendo exportado. Isso deve resolver o erro que você está enfrentando.

Espero ter ajudado e bons estudos!

Olá Renan

Colocar essa anotação não funcionou, diz que devo criá-la. Eu dei uma pesquisada e parece que tenho que criar esse Broadcast Receiver, mas não entendi direito. Pode me explicar o que devo fazer?