Espresso - 全屏执行操作失败 activity - InjectEventSecurityException

Espresso - Perform action fails on fullscreen activity - InjectEventSecurityException

我浪费了两天时间尝试在全屏上执行点击操作 activity。

重现步骤

  1. 使用全屏 activity 代码模板在 android 工作室中创建一个新项目
  2. 为 activity 编写 espresso 测试以执行点击

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

    }

  3. 运行 此模拟器测试(从姜饼到棒棒糖的任何 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

完整堆栈是 here

尝试过

我尝试了以下但没有成功:

TL;DR

在 espresso 测试中,如果我使用非全屏 activity 就像使用空白 activity 创建的那样,执行操作会很好。全屏相同操作失败。

我正在使用 Espresso 2.0 和支持库。

我做错了什么?

更新

Espresso 开发人员确认这是缺陷。请参阅 issue 140

此错误已在 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'

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

在 AndroidStudio 中:Grandle 脚本 => build.gradle 文件