¿Cómo puedo comprobar en Robotium que la aplicación ha terminado?

Estoy tratando de crear un método de prueba utilizando Robotium para comprobar si la aplicación de Android termina después de hacer clic en un botón (en el código hay una llamada a finish() cuando el usuario hace tapping).

 public void test_onclickExit_finish() { String buttonText = resources.getString(R.string.exit); Button exitButton = solo.getButton(buttonText, true); solo.clickOnView(exitButton); // check here that the app has finished // wait for the activity to finish? assertTrue(solo.getCurrentActivity() == null); } 

Pero esta prueba está fallando. No sé cómo puedo indicar la prueba para esperar hasta que la actividad haya terminado. También no estoy seguro de si el uso de getCurrentActivity() sería una buena manera de comprobar si la aplicación ha terminado.

¿Cómo puedo verificar que la aplicación / actividad ha terminado?

Gracias.

Aplicación e instrumentación se ejecutan en el mismo proceso, si usted termina su aplicación, no se puede hacer nada más en la instrumentación. Fracasó, porque la instrumentación también fue asesinada, y trataste de hacer algo más. No hay manera de comprobar lo que está tratando de hacer con robotium.

Si es tu actividad principal, usa esto:

 assertTrue(solo.getCurrentActivity().isFinishing()); 

Esta pregunta es vieja, pero quizás mi solución puede ayudar a alguien.

He encontrado una manera de esperar / detectar si una actividad fue terminada cuando se utiliza Robotium.

  • Crear una condición para detectar cuando se desactiva la vista de la raíz de la actividad de la ventana: (Estoy usando un método auxiliar en mi ejemplo)

     public static Condition activityWillClose(final Activity activity) { return new Condition() { boolean _detached = false; { // constructor View rootView = activity.getWindow().getDecorView().findViewById(android.R.id.content); rootView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() { @Override public void onViewAttachedToWindow(View view) { } @Override public void onViewDetachedFromWindow(View view) { _detached = true; } }); } @Override public boolean isSatisfied() { return _detached; } }; } 
  • espere la condición en su prueba:

     solo.clickOnView(solo.getView(R.id.exitButton)); Assert.assertTrue("should finish activity", solo.waitForCondition(activityWillClose(solo.getCurrentActivity()), 2000) ); 
  • Prueba de unidad automatizada para Android / Ant
  • Prueba de un ContentProvider personalizado en Android
  • Cómo detener una aplicación de Android desde la consola
  • Soluciones actuales para probar aplicaciones de Android
  • Carpeta de activos en Android Studio Unit Test
  • ¿Cómo probar la función de sincronización de ejecución en android?
  • Uso de la actividad de no producción para probar con Android Studio
  • Cómo detener y reiniciar una actividad en una prueba de instrumentación de Android?
  • ¿Cómo puedo ejecutar una sola prueba con gradle android
  • Prueba de GPS en Android
  • Prueba de un servicio de accesibilidad de Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.