2010-12-09 12 views
7

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 al probar el comportamiento de mi aplicación en modo vertical, pero si pongo el emulador (manualmente) en el paisaje antes de ejecutar la prueba, falla. Está bien, el comportamiento en el paisaje no debe pasar las pruebas de retrato, y sé cómo verificar la orientación de mi código de prueba, así puedo evitar las fallas de la prueba, pero lo que quiero hacer es (del código de prueba) pon el emulador en el estado correcto para cada una de mis pruebas. ¿Cómo puedo hacer eso?¿Cómo puedo rotar el emulador de Android desde el código de prueba?

Respuesta

2

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

+0

buena idea! gracias por eso. – davidjnelson

0

Usted puede hace pulsando siguiente secuencia de teclas Ctrl + F12

+2

Sé que Ctrl + F12 y Ctrl + F11, respectivamente, rotarán el emulador en sentido antihorario y en el sentido de las agujas del reloj. Así es como rotar el emulador * manualmente *. Lo que estoy preguntando es cómo rotar el emulador del código en mi prueba. –

1

que no estoy viendo nada de obvio usar como un comando de la consola del emulador. Desde el host, podrías quizás 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 prueba se ejecuta en el emulador, puede hacer clic en algo que esté escuchando en un puerto en el host que aparecerá como 10.0.2.2 desde el emulador y solicitarle que lo inyecte. Pero esto parece poco elegante.

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

Cuestiones relacionadas