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

  • Prueba de instrumentación para Android - ¿Cómo recibir nueva actividad después del cambio de orientación?
  • ¿Cómo enviar eventos clave a un emulador sin cabeza en una prueba de instrumentación?
  • Cómo probar la aplicación empresarial android en varios dispositivos
  • Android en las pruebas de suscripción de aplicaciones
  • Android: ejecución de pruebas instrumentadas en el servidor de TeamCity
  • Android Marshmallow Permisos de Pruebas
  • Problema con Android IAP, sin OrderID en el objeto de compra
  • Prueba de un servicio de accesibilidad de Android?
  • Envío de mayúsculas a un TextEdit durante pruebas instrumentadas
  • ¿Cómo probar una ListActivity burlándose de su contentProvider y así aislar la prueba de la base de datos?
  • 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.