Pruebas de instrumentación: getActivity () está causando una excepción NullPointerException
Cuando ejecuto mi prueba obtengo este error:
Java.lang.NullPointerException: Intenta invocar el método virtual 'void android.app.Instrumentation.setInTouchMode (boolean)' en una referencia de objeto nulo
- Android Studio 0.8.6 cambiar la variante de construcción predeterminada
- Cómo utilizar la herramienta Monitor (DDMS) para depurar la aplicación
- Dependencias de Gradle: compilar el proyecto por ruta relativa
- ¿Cómo se abre un proyecto de Android Studio en Eclipse?
- Cómo cambiar el tema de Darcula a predeterminado en Android Studio
En android.test.ActivityInstrumentationTestCase2.getActivity (ActivityInstrumentationTestCase2.java:100)
En com.example.my_project.MyActivityTest.setup (MyActivityTest.java:46)
Este es mi código:
@RunWith(AndroidJUnit4.class) public class MyActivityTest extends ActivityInstrumentationTestCase2<MyActivity> { private MyActivity myActivity; // ... public MyActivityTest() { super(MyActivity.class); } @Before public void setup() throws Exception { super.setUp(); setActivityInitialTouchMode(true); myActivity = getActivity(); }
También he intentado substituir la mayor parte del código antedicho con un método de prueba como esto:
@Test public void testActivityNotNull() { MyActivity myActivity = getActivity(); assertNotNull(myActivity); }
Pero consigo el mismo error. ¿Por qué está pasando esto?
- Cómo deshabilitar la advertencia de estilo de código de Android Studio "... puede simplificarse a ..."
- Android Studio Maps Api v2
- Presentación preliminar con teclado suave abierto
- Cómo "Ejecutar como aplicación web" un respaldo de App Engine en Android Studio
- ¿Soporta Android Studio Maven?
- Error al cargar proyecto: No se pueden cargar 3 facetas Detalles
- Android Studio Project dice que el proyecto ya está en GitHub a pesar de que he eliminado el repositorio.
- ¿Es posible descargar un perfil de hardware del dispositivo para crear un AVD equivalente?
Finalmente lo deduje. Necesita agregar la siguiente línea de código:
injectInstrumentation(InstrumentationRegistry.getInstrumentation());
Antes de llamar a getActivity (). Así que en tu caso tendrías un método de configuración como este:
@Before public void setUp() throws Exception { super.setUp(); // Injecting the Instrumentation instance is required // for your test to run with AndroidJUnitRunner. injectInstrumentation(InstrumentationRegistry.getInstrumentation()); mMainActivity = getActivity(); }
Respuesta se han encontrado en documentos oficiales: http://developer.android.com/tools/testing-support-library/index.html#AndroidJUnitRunner
- Cómo recibir el estado de la intención del gestor de descargas hasta que el éxito de la descarga o no
- Android cambia ProgressDialog dibujable mientras el diálogo funciona