Search code examples
androidtestinginstrumentationscreen-orientationuiinterfaceorientation

How do you force an orientation change in an Android Instrumentation test?


I'm writing some acceptance tests for an application using the ActivityInstrumentationTestCase2 class. I want to cause an orientation change from within the test to ensure that a number of things happen. Among these things are ensuring that Activity state is preserved, but also I'd like to ensure that the appropriate layout for the orientation is used.

I know I can simply test the onSaveInstanceState/onRestoreInstanceState/onPause/onResume/etc. methods to make sure instance state is preserved. However, I was wondering if there is actually a mechanism for causing an orientation change event?

Would this involve injecting some kind of motion event to trick the device/emulator into thinking that it has been rotated, or is there an actual method for this provided by the Instrumentation?

Thanks & Cheers!


Solution

  • You do not actually have to use Robotium for this at all. In fact, if you view the source of Robotium all it is doing when you call

    solo.setActivityOrientation(Solo.LANDSCAPE);
    

    is

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