Prueba de ciclo de vida de la actividad de Android

Tengo Actividad, que es guardar sus datos en caso de que el sistema decida matarlo mientras está en segundo plano. Por lo tanto, tengo onSaveInstanceState:

@Override protected void onSaveInstanceState(Bundle outState){ outState.putString("value", "some_value"); } 

Comprobar si el objeto Bundle es nulo en onCreate:

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); isRestarted=(savedInstanceState==null); 

¿Cómo escribo el método de prueba? Lo intenté

  public void testRecreate(){ Instrumentation mInstr=this.getInstrumentation(); mInstr.callActivityOnSaveInstanceState(mActivity, null); mActivity.finish(); mActivity=this.getActivity(); assertEquals(false, mActivity.isRestarted); } 

Pero parece que está mal.

Puede utilizar alguna funcionalidad de API oculta. En la configuración de su prueba, llame al

 android.app.ActivityManagerNative.getDefault().setAlwaysFinish() 

Método a través de la reflexión (porque es una API oculta) y confirmar que el valor se estableció correctamente mediante

 android.provider.Settings.System.getInt(getContentResolver(), Settings.System.ALWAYS_FINISH_ACTIVITIES, 0) 

A continuación, en la limpieza de prueba, vuelva a establecer esta configuración en false.

Habilitar el ajuste AlwaysFinish hace que el sistema destruya las actividades tan pronto como ya no estén en la pantalla, desencadenando de inmediato el evento onSaveInstanceState. Para que este código funcione, necesitará los ALWAYS_FINISH y WRITE_SETTINGS .

Vea el código de la herramienta SetAlwaysFinish vinculada en este blog: Cómo probar onSaveInstanceState y onRestoreInstanceState en un dispositivo real

Para la prueba manual, esta rutina funciona:

  1. Inicie la actividad que desea probar
  2. Pulse el botón de menú de inicio en su dispositivo (actividad se detiene)
  3. Eliminar el proceso de DDMS (la actividad todavía no se destruye )
  4. Volver a traer la aplicación de la lista de aplicaciones recientes

Esto debería activar onCreate nuevo en su actividad mientras no se reinicia la aplicación completa. Si no está guardando y cargando el estado correctamente, lo sabrá muy pronto.

Si usted no ha sido a través de él antes, me pareció que vale la pena hacerlo al menos una vez.

Cosas como esa podrían ser fácilmente probar usando robolectric . ¡Echale un vistazo!

  • ¿Por qué realizar pruebas en un proyecto separado, en lugar de carpeta?
  • Preguntas sobre la prueba de unidad Android con gradle o estudio de android
  • Unidad Método de prueba que no contiene lambda expresión Android Studio
  • Ejecute UiAutomator API desde Android Studio (v0.8)
  • Cómo generar informes de pruebas de Android en HTML automáticamente
  • qué prueba de unidad, en aplicaciones Android
  • Android prueba: cómo comprobar un diálogo se muestra en la pantalla? (mediante ActivityInstrumentationTestCase2)
  • Prueba de unidad de actividad
  • Android Test Case - ¿cómo ver la salida?
  • Prueba de unidad en la función de extensión de Kotlin en las clases de SDK de Android
  • Prueba de unidad de base de datos SQLite de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.