Как вы заставляете изменение ориентации в тесте на Android Instrumentation?

StackOverflow https://stackoverflow.com/questions/3515959

Вопрос

Я пишу некоторые приемные тесты для приложения с использованием класса 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), которое показывает, насколько он мощный и насколько легко его можно использовать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top