Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


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.

6 Solutions collect form web for “Obtenga el contexto del proyecto de prueba en el caso de prueba de Android junit”

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.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.