¿Cómo puedo rotar el emulador de Android desde el código de prueba?

Quiero probar el comportamiento diferente de mi aplicación en modo horizontal y vertical. Tengo una subclase de android.test.InstrumentationTestCase que hace un buen trabajo de probar el comportamiento de mi aplicación en el modo retrato, pero si (manualmente) poner el emulador en el paisaje antes de ejecutar la prueba, falla. Eso está bien – el comportamiento en el paisaje no debe pasar las pruebas de retrato – y sé cómo comprobar la orientación de mi código de prueba, para poder evitar los fallos de la prueba – pero lo que quiero hacer es (de código de prueba) poner el Emulador en el estado correcto para cada una de mis pruebas. ¿Cómo puedo hacer eso?

Lo que terminé haciendo fue extraer el bit de código en mi actividad que obtuvo la orientación en una interfaz OrientationGetter y dar a la actividad un DefaultOrientationGetter que devolvió la orientación del dispositivo (o emulador). Ahora mi prueba puede inyectar un stub mudo OrientationGetter que simplemente devuelve retrato o paisaje según sea necesario, y puedo probar el código de mi actividad sin controlar realmente el estado del emulador. Funciona bien.

No veo nada de uso obvio como un comando de consola de emulador. Desde el host, tal vez podría inyectar el F11 / F12 en el emulador usando Xtest o algún código win32 (y posiblemente determinar el estado actual leyendo la geometría de la ventana). Si la lógica de la prueba está funcionando en el emulador usted podría tcp hacia fuera a algo que escucha en un puerto en el anfitrión que aparecería como 10.0.2.2 del emulador y pedirle que inyecte esa llave. Pero esto parece poco elegante.

Reconstruir el emulador para agregar un comando de consola sería un poco mejor.

Puede hacerlo pulsando la siguiente secuencia de teclas Ctrl + F12

  • No se pueden construir pruebas con Gradle (decard-gradle)
  • Prueba de unidad de ciclo de vida de actividad
  • La falla de Android ActivityMonitor hace que getActivity () nunca vuelva
  • Deshabilitar el error de clase duplicado para las clases en la carpeta de prueba - Android Studio / IntelliJ
  • Android Studio: No se puede escribir en Preferencias compartidas en la prueba instrumentada
  • Método setUp en android.test.AndroidTestCase no es burlado
  • Cómo probar la unidad android y burlarse de un método estático
  • Prueba de unidad de base de datos SQLite de Android
  • Cómo ensayar un servicio de Android que depende de una conexión de red
  • ActivityUnitTestCase getActionBar () devuelve null
  • ¿Por qué obtengo un error de acceso ilegal al ejecutar las pruebas de Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.