Intereting Posts
Android – обнаружение Bluetooth не находит никакого устройства Пользовательский глобальный класс приложения разбивается на "android.app.Application не может быть отброшен в" Actionlayout на menuitem ничего не делает Android: Отмените задачу Async Изменение значка меню в панели действий в зависимости от открытого фрагмента Переопределите андроидную аппаратную кнопку назад, заставьте ее выйти на одну страницу и вернуть ее на следующих страницах Моя служба всегда получает Waited достаточно долго для: Ошибка ServiceRecord в Kitkat Установить растровое изображение на фон ImageView с помощью метода imageView.setImageBitmap Как получить событие клика в тексте маркера Как определить, способно ли устройство звонить и отправлять сообщения Не удалось разрешить: com.google.android.gms: play-services-gcm: 7.5. + Разделить Android-приложение на две части В андроиде, как сделать изображение расти с одной точки с помощью анимации? Android UnknownHostException: есть ли способ установить тайм-аут? Не может найти символ BR в привязке данных к android

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

Я пишу несколько приемочных тестов для приложения, используя класс ActivityInstrumentationTestCase2. Я хочу вызвать изменение ориентации из теста, чтобы убедиться, что произошло несколько вещей. Среди этих вещей – сохранение состояния Activity, но также я хотел бы убедиться, что используется соответствующий макет для ориентации.

Я знаю, что могу просто протестировать onSaveInstanceState / onRestoreInstanceState / onPause / onResume / etc. Чтобы убедиться, что состояние экземпляра сохранено. Однако мне было интересно, есть ли на самом деле механизм для возникновения события изменения ориентации?

Будет ли это связано с инъецированием какого-либо события движения, чтобы обмануть устройство / эмулятор, считая, что оно повернуто, или существует реальный метод для этого, предоставленный Инструментами?

Спасибо и приветствует!

Solutions Collecting From Web of "Как вы принудительно изменяете ориентацию в тесте на Android Instrumentation?"

На самом деле вам вообще не нужно использовать Robotium. Фактически, если вы просматриваете источник Robotium, все это делает, когда вы вызываете

solo.setActivityOrientation(Solo.LANDSCAPE); 

является

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

Как писал AndrewKS, вы можете использовать

 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(...); 

Используйте Robotium для этого. Существует класс под названием Solo, с помощью которого вы можете изменить ориентацию, просто вызвав метод:

 solo.setActivityOrientation(Solo.LANDSCAPE); 

Это оно! Ваша ориентация изменится. Вы можете Google Robotium и получить свою банку и добавить ее в свой тестовый проект. Сайт Robotium также дает пример тестового проекта в приложении Notepad от Android (который доступен в качестве примера проекта с Android SDK), который показывает, насколько он силен и насколько легко он может быть использован.