Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Mockito can only mock non-private & non-final classes.

Fiz o teste exatamente como descrito em aula e recebi o erro abaixo:

erro ao rodar teste com mockito

2 respostas
solução!

Olá Ludmilla! Tudo bem?

O erro que você está enfrentando ocorre porque o Mockito, por padrão, não consegue mockar classes que são final ou private, como é o caso da classe Context do Android. Para resolver esse problema, você pode usar o framework Mockito com o plugin mockito-inline, que permite mockar classes finais:

  1. Adicionar dependência do Mockito Inline: No arquivo build.gradle do módulo do seu app, adicione a seguinte dependência:

    testImplementation 'org.mockito:mockito-inline:4.0.0' // Verifique a versão mais recente
    
  2. Revisar o uso do Context: Em vez de mockar o Context, considere passar um contexto real ou usar uma abordagem diferente para testar a funcionalidade que depende dele. Muitas vezes, você pode usar um ApplicationProvider para obter um contexto de teste:

    Context context = ApplicationProvider.getApplicationContext();
    
  3. Verifique outros mocks: Certifique-se de que outras classes que você está tentando mockar não sejam finais ou privadas, ou use o mockito-inline para lidar com elas.

Após essas alterações, tente rodar seus testes novamente. Isso deve resolver o problema com o Mockito.

Espero ter ajudado. Conte com o apoio do fórum em sua jornada :)

Um abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Após acrescentar a dependencia, funcionou! Muito obrigada pela excelente dica!