¿Cómo forzar un cambio de orientación en una prueba de instrumentación de Android?
Estoy escribiendo algunas pruebas de aceptación para una aplicación usando la clase ActivityInstrumentationTestCase2. Quiero causar un cambio de orientación desde dentro de la prueba para asegurar que ocurran varias cosas. Entre estas cosas están asegurando que el estado de actividad se conserva, pero también me gustaría asegurarme de que se use el diseño apropiado para la orientación.
Sé que puedo probar simplemente el onSaveInstanceState / onRestoreInstanceState / onPause / onResume / etc. Métodos para asegurar que el estado de la instancia se conserva. Sin embargo, me preguntaba si realmente hay un mecanismo para causar un cambio de orientación?
- Android en las pruebas de suscripción de aplicaciones
- Cómo inyectar el evento de clic con Android UiAutomation.injectInputEvent
- Prueba de instrumentación para Android - ¿Cómo recibir nueva actividad después del cambio de orientación?
- Cómo probar la aplicación empresarial android en varios dispositivos
- ClassNotFoundException durante el instrumento de prueba de Android
¿Esto implica la inyección de algún tipo de evento de movimiento para engañar al dispositivo / emulador en el pensamiento de que ha sido girado, o hay un método real para esto proporcionado por la instrumentación?
¡Gracias y Saludos!
- ¿Por qué no hay instrumentación de prueba para BroadcastReceiver?
- Java y la metodología de prueba de Android
- ApplicationTestCase obsoleto en el nivel 24 de API
- Prueba onActivityResult ()
- Envío de mayúsculas a un TextEdit durante pruebas instrumentadas
- ¿Cómo puedo ejecutar una sola prueba con gradle android
- ¿Cómo puedo comprobar en Robotium que la aplicación ha terminado?
- Espresso prueba pegado / inactivo después de realizar (haga clic ()) en el botón en ViewAnimator
Usted realmente no tiene que usar Robotium para esto en absoluto. De hecho, si usted ve la fuente de Robotium todo lo que está haciendo cuando llama
solo.setActivityOrientation(Solo.LANDSCAPE);
es
myActivity = this.getActivity(); // In your setUp method() ... myActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Como escribió AndrewKS puedes usar
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); assertTrue(...);
Para solicitar un cambio de orientación. Pero la rotación en sí se ejecuta de forma asíncrona. Para probar realmente el estado después del cambio de la orientación usted necesita esperar un poco tiempo después de la petición:
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); Thread.sleep(50); // depends on performance of the testing device/emulator assertTrue(...);
Utilice Robotium para ello. Hay una clase llamada Solo, con la que puedes cambiar la orientación simplemente llamando a un método:
solo.setActivityOrientation(Solo.LANDSCAPE);
¡Eso es! Su orientación se cambiaría. Usted puede google Robotium y obtener su tarro y añadirlo a su proyecto de prueba. El sitio de Robotium también ofrece un ejemplo de proyecto de prueba en la aplicación Notepad de Android (que está disponible como un proyecto de ejemplo con Android SDK) que muestra lo poderoso que es y la facilidad con que podría utilizarse.