Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带Android仿真器的TouchUtils_Android_Unit Testing - Fatal编程技术网

带Android仿真器的TouchUtils

带Android仿真器的TouchUtils,android,unit-testing,Android,Unit Testing,有没有人能够使用TouchUtils类提供的方法在Android仿真器上成功地执行单元测试? 我能够在我的设备上通过测试,但当我在模拟器上运行完全相同的测试(和测试套件)时,任何使用TouchUtils方法的测试都会引发以下异常: java.lang.SecurityException: Injecting to another application requires INJECT_EVENTS permission at android.os.Parcel.readException(Par

有没有人能够使用
TouchUtils
类提供的方法在Android仿真器上成功地执行单元测试?
我能够在我的设备上通过测试,但当我在模拟器上运行完全相同的测试(和测试套件)时,任何使用
TouchUtils
方法的测试都会引发以下异常:

java.lang.SecurityException: Injecting to another application requires INJECT_EVENTS permission
at android.os.Parcel.readException(Parcel.java:1327)
at android.os.Parcel.readException(Parcel.java:1281)
at android.view.IWindowManager$Stub$Proxy.injectPointerEvent(IWindowManager.java:1196)
at android.app.Instrumentation.sendPointerSync(Instrumentation.java:902)
at android.test.TouchUtils.drag(TouchUtils.java:786)
at android.test.TouchUtils.dragViewTo(TouchUtils.java:633)
...
我解锁了keyguard,甚至运行了其他(非TouchUtils)已通过的测试用例。
我没有应用
@UiThreadTest
,也没有运行任何需要在UI线程上运行代码的操作。
当我注释掉使用
TouchUtils.dragViewTo(…)
的行并放入一个简单的
assert(true)
时,测试运行并通过


有什么想法吗?

如果您的手机被锁定或主屏幕上有其他活动,就会发生这种情况。

模拟器速度太慢,以至于当您在关闭虚拟键盘后模拟UI交互时,没有足够的时间让虚拟键盘退出,因此实际上是将事件注入虚拟键盘,而不是应用程序

隐藏软键盘后,在尝试进行任何UI交互之前,只需在线程上休眠约500-1000毫秒

try {
    Thread.sleep(500);
} 
catch (InterruptedException e) {
    e.printStackTrace();
}

它在我的手机上工作,在模拟器上不工作。我已经从屏幕上移除了锁,因为我可以看到其他测试正在模拟器上运行。你找到答案了吗?我也有这个麻烦,在这个问题上没有太多的东西可以找到。