¿Alguien sabe cómo puede obtener el contexto del proyecto de prueba en el caso de prueba de Android junit (extiende AndroidTestCase)?
Nota: La prueba NO es una prueba de instrumentación.
Nota 2: Necesito el contexto del proyecto de prueba, no el contexto de la aplicación real que se prueba.
Necesito esto para cargar algunos archivos de activos del proyecto de prueba.
Respuestas:
Hay un nuevo enfoque con la biblioteca de compatibilidad con pruebas de Android (actualmente
androidx.test:runner:1.1.1
). Ejemplo actualizado de Kotlin:Si también desea ejecutar el contexto de la aplicación:
Ejemplo de ejecución completo: https://github.com/fada21/AndroidTestContextExample
Mire aquí: ¿Cuál es la diferencia entre getTargetContext () y getContext (en InstrumentationRegistry)?
fuente
compile "com.android.support.test:runner:1.0.1"
a tu gradleInstrumentationRegistry.getInstrumentation().context
en su lugar.Después de algunas investigaciones, la única solución que funciona parece ser la que ya ha señalado yorkw. Tendría que extender InstrumentationTestCase y luego puede acceder al contexto de su aplicación de prueba usando getInstrumentation (). GetContext () - aquí hay un breve fragmento de código usando las sugerencias anteriores:
fuente
Como puede leer en el código fuente de AndroidTestCase , el
getTestContext()
método está oculto.Puede omitir la
@hide
anotación mediante la reflexión.Simplemente agregue el siguiente método en su
AndroidTestCase
:Entonces llama
getTestContext()
cuando quieras. :)fuente
java.lang.NoSuchMethodException: android.test.ServiceTestCase.getTestContext()
Actualización:
AndroidTestCase
esta clase quedó obsoleta en el nivel de API 24. Úselo en suInstrumentationRegistry
lugar. Las nuevas pruebas deben escribirse utilizando la biblioteca de compatibilidad de pruebas de Android. Enlace al anuncioDebe extender desde AndroidTestCase en lugar de TestCase.
Descripción general de la clase AndroidTestCase
Amplíe esto si necesita acceder a los recursos u otras cosas que dependen del contexto de la actividad.
AndroidTestCase - Desarrolladores de Android
fuente
Si desea obtener el contexto con Kotlin y Mockito, puede hacerlo de la siguiente manera:
Espero que te ayude
fuente
Esta es la forma correcta de obtener el contexto. Otros métodos ya están en desuso
fuente
fuente
Para aquellos que se encuentran con estos problemas al crear pruebas automatizadas, deben hacer esto:
fuente
Las otras respuestas están desactualizadas. Ahora mismo, cada vez que amplía AndroidTestCase, hay un objeto de contexto mContext que puede usar.
fuente