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.

  • Ignorar las pruebas de la unidad de Android dependiendo del nivel de SDK
  • Prueba con elementos de interfaz de usuario en la vista de Android
  • Pruebas de instrumentación Android con Mockito
  • Android: java.lang.SecurityException: Inyectar a otra aplicación requiere el permiso de INJECT_EVENTS
  • La mejor manera de ejecutar pruebas rápidas de JUnit en un proyecto Android en Android Studio
  • Android JUnit Pruebas no se ejecutan
  • No se puede encontrar el paquete de destino de instrumentación: com.xyz
  • !!! JUnit versión 3.8 o posterior esperado
  • 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.