Подтвердить что ты не робот

Espresso - Выполнение действия не работает в полноэкранном режиме - InjectEventSecurityException

Я потратил два дня на то, чтобы выполнить действие щелчка в полноэкранном режиме.

Шаги по воспроизведению

  • Создайте новый проект в студии 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.

4b9b3361

Ответ 1

Эта ошибка была решена в последнем выпуске Espresso:

Espresso 2.2.2, Runner/Rules 0.5 (2016-02-22, тихий выпуск) - https://google.github.io/android-testing-support-library/downloads/release-notes/index.html

В моем проекте я изменил зависимость в /app/build.grandle:

androidTestCompile 'com.android.support.test.espresso: espresso-core: 2.1'

to

androidTestCompile 'com.android.support.test.espresso: espresso-core: 2.2.2'

В AndroidStudio: Grandle Scripts = > build.gradle file