Domanda

Sto scrivendo alcune prove di accettazione delle un'applicazione utilizzando la classe ActivityInstrumentationTestCase2. Voglio provocare un cambiamento di orientamento all'interno del test per assicurarsi che un certo numero di cose che succedono. Tra queste cose sono garantire che lo stato di attività è conservata, ma anche mi piacerebbe per garantire che il layout appropriato per l'orientamento viene utilizzato.

so che posso semplicemente testare la onSaveInstanceState / onRestoreInstanceState / onPause / onResume / etc. metodi per rendere sicuro lo stato istanza viene conservato. Tuttavia, mi chiedevo se v'è in realtà un meccanismo per provocare un evento di modifica dell'orientamento?

Sarebbe questo comporta l'iniezione di un qualche tipo di evento di movimento per ingannare il dispositivo / emulatore a pensare che è stato ruotato, o c'è un metodo effettivo per questo fornito dal Strumentazione?

Grazie & Cheers!

È stato utile?

Soluzione

in realtà non è necessario utilizzare Robotium per questo a tutti. Infatti, se si visualizza l'origine di tutto Robotium che sta facendo quando si chiama

solo.setActivityOrientation(Solo.LANDSCAPE);

è

myActivity = this.getActivity(); // In your setUp method()

...

myActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

Altri suggerimenti

Come AndrewKS scritto è possibile utilizzare

getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
assertTrue(...);

per richiedere un cambio di orientamento. Ma la rotazione stessa viene eseguita asincrono. Per provare davvero lo stato dopo il cambiamento dell'orientamento è necessario attendere un breve periodo di tempo dopo la richiesta:

getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Thread.sleep(50); // depends on performance of the testing device/emulator
assertTrue(...);

Usa Robotium per esso. C'è una classe denominata Solo, con cui è possibile modificare l'orientamento semplicemente chiamando un metodo:

solo.setActivityOrientation(Solo.LANDSCAPE);

Questo è tutto! L'orientamento sarebbe ottenere cambiato. È possibile google Robotium e ottenere il suo vaso e aggiungerlo al progetto di prova. Il sito Robotium dà anche un progetto di esempio di test sul blocco note App di Android (che è disponibile come un progetto di esempio con Android SDK), che mostra quanto sia potente è e come facilmente potrebbe essere utilizzato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top