Я потратил два дня на то, чтобы выполнить действие щелчка в полноэкранном режиме.
Шаги по воспроизведению
- Создайте новый проект в студии Android с использованием полноэкранного кода кода действий
-
Напишите тест эспрессо для действия, которое нужно выполнить, нажав
public class FullscreenActivityTest extends ActivityInstrumentationTestCase2<FullscreenActivity> { public FullscreenActivityTest() { super(FullscreenActivity.class); } @Override protected void setUp() throws Exception { super.setUp(); getActivity(); } public void testClickingOnLayout() { onView(withId(R.id.fullscreen_content)).perform(click()); }
}
- Запустите этот тест на эмуляторе (любая версия для Android от имбирного хлеба до леденца).
Отказ
android.support.test.espresso.PerformException:
Error performing 'click' on view 'with id: com.example.espressodefect:id/fullscreen_content'
...
Caused by: android.support.test.espresso.PerformException:
Error performing 'Send down montion event' on view 'unknown'.
...
Caused by: android.support.test.espresso.InjectEventSecurityException: java.lang.SecurityException:
Injecting to another application requires INJECT_EVENTS permission
Полный стек здесь.
Пробовал
Я пробовал следующее без везения:
- На эмуляторе нет экрана блокировки. (также обновленная активность с использованием
WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD)
- Все анимации отключены.
- Нет экранной клавиатуры или всего, что наложено поверх приложения.
- Также следуйте инструкциям здесь на сайте developer.android.com
- стили JUnit3 и JUnit4 (AndroidJUnitRunner)
-
<uses-permission>
для INJECT_EVENTS
TL; DR
В эспрессо-тесте выполнение действий отлично работает, если я использую не полноэкранную активность, например, созданную с пустой активностью. То же действие в полноэкранном режиме выходит из строя.
Я использую Espresso 2.0 и библиотеки поддержки.
Что я здесь делаю неправильно?
Update
Espresso dev подтвердил это как дефект. См. вопрос 140.