¿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?

¿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!

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.

  • Optimizar el esfuerzo de prueba de Android
  • Cómo generar html informe con gradle 1.12?
  • Robolectric + rxJava + retrofit Segunda llamada lanza java.io.InterruptedIOException
  • Cómo detener una aplicación de Android desde la consola
  • Cómo detener y reiniciar una actividad en una prueba de instrumentación de Android?
  • Java.lang.RuntimeException: ¡Stub! - ¿Cobertura de código de Android?
  • Android Marshmallow Permisos de Pruebas
  • Destruye y reinicia la actividad con la biblioteca de soporte de pruebas
  • Pruebas de facturación en la aplicación con cuentas de prueba
  • Android: ejecución de pruebas instrumentadas en el servidor de TeamCity
  • ProviderTestCase2.getProvider () es nulo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.