Как вы заставляете изменение ориентации в тесте на Android Instrumentation?
Вопрос
Я пишу некоторые приемные тесты для приложения с использованием класса ActivityInstrumentationTestSact2. Я хочу вызвать изменение ориентации изнутри теста, чтобы убедиться, что происходит ряд вещей. Среди этих вещей обеспечивает сохранение состояния деятельности, но также я хотел бы обеспечить использование соответствующей компоновки ориентации.
Я знаю, что могу просто проверить OnsaveInstanceState/onrestoreInstancestate/onpause/onresume/и т. Д. Методы, чтобы убедиться, что состояние экземпляра сохраняется. Тем не менее, мне было интересно, существует ли фактически механизм, чтобы вызвать событие изменения ориентации?
Будет ли это включать в себя какое -то событие движения, чтобы заставить устройство/эмулятор думать, что оно повернуто, или есть фактический метод для этого, предоставляемый инструментами?
Спасибо и ура!
Решение
На самом деле вам вообще не нужно использовать роботиум для этого. На самом деле, если вы просматриваете источник роботиума все, что он делает, когда вы звоните
solo.setActivityOrientation(Solo.LANDSCAPE);
является
myActivity = this.getActivity(); // In your setUp method()
...
myActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Другие советы
Как писал Эндрюкс, вы можете использовать
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
assertTrue(...);
Чтобы запросить изменение ориентации. Но само вращение выполняется асинхронным. Действительно проверить государство после Изменение ориентации вам нужно подождать короткое время после запроса:
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Thread.sleep(50); // depends on performance of the testing device/emulator
assertTrue(...);
Используйте роботиум для него. Существует класс под названием Solo, который вы можете изменить ориентацию, просто вызывая метод:
solo.setActivityOrientation(Solo.LANDSCAPE);
Вот и все! Ваша ориентация изменится. Вы можете Google Robotium, получить его JAR и добавить ее в свой тестовый проект. На сайте Robotium также приведен пример тестового проекта в приложении Android Botpad (которое доступно в качестве образца проекта с Android SDK), которое показывает, насколько он мощный и насколько легко его можно использовать.