Alguém sabe como você pode obter o contexto do projeto Teste no caso de teste do Android junit (estende AndroidTestCase).
Nota: O teste NÃO é um teste de instrumentação.
Observação 2: preciso do contexto do projeto de teste, não do contexto do aplicativo real que é testado.
Preciso disso para carregar alguns arquivos de ativos do projeto de teste.
Respostas:
Há uma nova abordagem com a Biblioteca de Suporte de Teste do Android (atualmente
androidx.test:runner:1.1.1
). Exemplo atualizado de Kotlin:Se você também quiser executar o contexto do aplicativo:
Exemplo de execução completa: https://github.com/fada21/AndroidTestContextExample
Veja aqui: Qual é a diferença entre getTargetContext () e getContext (em InstrumentationRegistry)?
fonte
compile "com.android.support.test:runner:1.0.1"
ao seu gradleInstrumentationRegistry.getInstrumentation().context
vez disso.Depois de alguma pesquisa, a única solução de trabalho parece ser a que yorkw já apontou. Você teria que estender InstrumentationTestCase e então você pode acessar o contexto de seu aplicativo de teste usando getInstrumentation (). GetContext () - aqui está um breve trecho de código usando as sugestões acima:
fonte
Como você pode ler no código-fonte AndroidTestCase , o
getTestContext()
método está oculto.Você pode ignorar a
@hide
anotação usando reflexão.Basta adicionar o seguinte método em
AndroidTestCase
:Em seguida, ligue
getTestContext()
quando quiser. :)fonte
java.lang.NoSuchMethodException: android.test.ServiceTestCase.getTestContext()
Atualização:
AndroidTestCase
esta classe foi descontinuada no nível de API 24. Use em seuInstrumentationRegistry
lugar. Novos testes devem ser escritos usando a Android Testing Support Library. Link para o anúncioVocê deve estender de AndroidTestCase em vez de TestCase.
Visão geral da classe AndroidTestCase
Estenda isso se precisar acessar recursos ou outras coisas que dependem do contexto de atividade.
AndroidTestCase - Desenvolvedores Android
fonte
Se quiser entender o contexto com Kotlin e Mockito, você pode fazer isso da seguinte maneira:
Espero que ajude você
fonte
Esta é a maneira correta de obter o Contexto. Outros métodos já estão obsoletos
fonte
fonte
Para aqueles que encontrarem esses problemas ao criar testes automatizados, você deve fazer o seguinte:
fonte
As outras respostas estão desatualizadas. Agora, sempre que você estende o AndroidTestCase, há o objeto mContext Context que você pode usar.
fonte