¿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.
- Prueba de suscripción en Android: elemento no encontrado
- ¿Cómo puedo ejecutar el código en el hilo de la interfaz de usuario en una prueba de Android JUnit sin una actividad?
- ClassNotFoundException durante el instrumento de prueba de Android
- Pruebas de facturación en la aplicación con cuentas de prueba
- Android: ejecución de pruebas instrumentadas en el servidor de TeamCity
¿Cómo puedo verificar que la aplicación / actividad ha terminado?
Gracias.
- Prueba de Android fuera del espacio de almacenamiento
- Deshabilitar eventos a nivel de sistema en Android mono
- Cómo inyectar el evento de clic con Android UiAutomation.injectInputEvent
- Java.lang.RuntimeException: ¡Stub! - ¿Cobertura de código de Android?
- Cómo generar html informe con gradle 1.12?
- Destruye y reinicia la actividad con la biblioteca de soporte de pruebas
- Android: ¿Cómo puedo guardar, borrar y restaurar SharedPreferences para la prueba de unidades?
- Android en las pruebas de suscripción de aplicaciones
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) );
- Error al recuperar el correo electrónico y la ubicación de Facebook Request in Android
- Conexión a un espacio de nombres socket.io mediante la biblioteca socket.io-client.java