Espresso - 全屏执行操作失败 activity - InjectEventSecurityException
Espresso - Perform action fails on fullscreen activity - InjectEventSecurityException
我浪费了两天时间尝试在全屏上执行点击操作 activity。
重现步骤
- 使用全屏 activity 代码模板在 android 工作室中创建一个新项目
为 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());
}
}
- 运行 此模拟器测试(从姜饼到棒棒糖的任何 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。
尝试过
我尝试了以下但没有成功:
- 模拟器上没有锁屏。 (还使用
WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD)
更新了 activity
- 所有动画关闭
- 没有屏幕键盘,也没有覆盖在应用程序顶部的任何东西。
- 也遵循 developer.android.com
中的说明 here
- JUnit3 和 JUnit4 样式(AndroidJUnit运行ner)
<uses-permission>
对于 INJECT_EVENTS
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 文件
我浪费了两天时间尝试在全屏上执行点击操作 activity。
重现步骤
- 使用全屏 activity 代码模板在 android 工作室中创建一个新项目
为 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()); }
}
- 运行 此模拟器测试(从姜饼到棒棒糖的任何 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。
尝试过
我尝试了以下但没有成功:
- 模拟器上没有锁屏。 (还使用
WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD)
更新了 activity
- 所有动画关闭
- 没有屏幕键盘,也没有覆盖在应用程序顶部的任何东西。
- 也遵循 developer.android.com 中的说明 here
- JUnit3 和 JUnit4 样式(AndroidJUnit运行ner)
<uses-permission>
对于 INJECT_EVENTS
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 文件