Obtenga el contexto del proyecto de prueba en el caso de prueba de Android junit

¿Alguien sabe cómo puede obtener el contexto del proyecto de prueba en el caso de prueba Android junit (se extiende AndroidTestCase).

Nota: La prueba NO es 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 los activos del proyecto de prueba.

Hay un nuevo enfoque con Android Testing Support Library (actualmente com.android.support.test: runner: 0.3) publicado.

@RunWith(AndroidJUnit4.class) @MediumTest public class SomeClassTest { private Context instrumentationCtx; @Before public void setup() { instrumentationCtx = InstrumentationRegistry.getContext(); } @Test public void someTest() { ... 

Si también quieres ejecutar el contexto de la aplicación:

 InstrumentationRegistry.getTargetContext(); 

Mira aquí: ¿Cuál es la diferencia entre getTargetContext () y getContext (en InstrumentationRegistry)?

Después de algunas investigaciones, la única solución de trabajo parece ser la que ya señaló. Tendrías que ampliar InstrumentationTestCase y luego acceder al contexto de tu aplicación de prueba usando getInstrumentation (). GetContext () – aquí hay un fragmento de código breve usando las sugerencias anteriores:

 public class PrintoutPullParserTest extends InstrumentationTestCase { public void testParsing() throws Exception { PrintoutPullParser parser = new PrintoutPullParser(); parser.parse(getInstrumentation().getContext().getResources().getXml(R.xml.printer_configuration)); } } 

Como se puede leer en el código fuente AndroidTestCase , el método getTestContext() se oculta.

 /** * @hide */ public Context getTestContext() { return mTestContext; } 

Puede omitir la anotación @hide utilizando la reflexión.

Sólo tienes que añadir el siguiente método en tu AndroidTestCase :

 /** * @return The {@link Context} of the test project. */ private Context getTestContext() { try { Method getTestContext = ServiceTestCase.class.getMethod("getTestContext"); return (Context) getTestContext.invoke(this); } catch (final Exception exception) { exception.printStackTrace(); return null; } } 

Luego llame a getTestContext() cuando quiera. 🙂

Debería extenderse desde AndroidTestCase en lugar de TestCase.

Descripción de la clase AndroidTestCase
Amplíe esto si necesita acceder a Recursos u otras cosas que dependen del Contexto de Actividad.

AndroidTestCase – Desarrolladores de Android

Si sólo necesita acceder a los recursos de su proyecto, puede utilizar el método getActivity () de la clase ActivityInstrumentationTestCase2 :

  //... private YourActivityClass mActivity; @Override protected void setUp() throws Exception { //... mActivity = getActivity(); } //... public void testAccessToResources() { String[] valueList; valueList = mActivity.getResources().getStringArray( com.yourporject.R.array.test_choices); } 

Las otras respuestas están obsoletas. Ahora mismo cada vez que extiendes AndroidTestCase, hay mContext objeto de contexto que puedes usar.

  • JUnit en android
  • ¿Cómo puedo supervisar el tráfico HTTP del simulador de iOS / el emulador de Android de las pruebas de Appium JUnit?
  • Cómo comprobar que la actividad muestra el diálogo durante la prueba de unidad de Android
  • ¿Cómo ejecutar una prueba JUnit4 simple en Android Studio 1.1?
  • No se encontraron pruebas en <package> cuando se realizaron pruebas con Espresso
  • Android ejecutando script de hormigas en el dispositivo ejecutando casos de prueba y generando un informe de cobertura de código
  • ¿Es posible entrar en el modo de depuración para android cuando se ejecuta junit test?
  • Android JUnit Pruebas ... Cómo esperar una excepción
  • JUnit - ComparisonFailure en la cadena formateada
  • Android Studio - con Junit 4.12 "!!! JUnit versión 3.8 o posterior esperado: "
  • Envío de mayúsculas a un TextEdit durante pruebas instrumentadas
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.