我正在进行一项有摄像头的活动,并且通过onDraw()
方法在相机上设置了一个面罩,我正在为相机屏幕上方的导航抽屉编写测试用例,但是收到错误
也许主线程在合理的时间内没有闲置?可能会有一个动画或不断重新绘制屏幕的东西。或者活动是在创建网络呼叫?请参阅threaddump日志。在您的活动启动请求为1472804618974之前,事件队列最后一次空闲以供您参考,现在队列最后一次空闲时间为:1472804618974。如果这些数字相同,您的活动可能会占用事件队列
我已经关闭了已经提到过的动画 QFormLayout
不知道需要做什么。
答案 0 :(得分:1)
我已经关闭了已经提到过的动画 https://google.github.io/android-testing-support-library/docs/espresso/setup/index.html
出现此问题不是因为动画已关闭,而是因为Espresso
框架字符:Espresso
取决于您的实际应用程序上下文。
Espresso for Android是完美而快速的测试自动化框架, 但它有一个重要的限制 - 你只能操作 在测试环境下的应用内部。
这意味着无法自动化此类应用的测试 功能如:
- 应用程序推送通知
- 联系同步
- 从另一个应用导航到您正在测试的应用
因为你必须处理来自移动设备的其他应用程序 - 通知栏,通讯录或人物应用等
来自:http://qathread.blogspot.com/2015/05/espresso-uiautomator-perfect-tandem.html
这意味着Espresso
测试基于UI线程并在主线程空闲时等待()。
也许主线程在合理的时间内没有闲置?可能会有一个动画或不断重新绘制屏幕的东西。或者活动是在创建网络呼叫?请参阅threaddump日志。在您的活动启动请求为1472804618974之前,事件队列最后一次空闲以供您参考,现在队列最后一次空闲时间为:1472804618974。如果这些数字相同,您的活动可能会占用事件队列。
这意味着您的主线程实际上正忙,Espresso无法执行任何新操作,它正在等待免费闲置资源运行。
要解决此问题,您可以选择以下选项:
编写自己的自定义Espresso IdlingResource
来表示Espresso何时可以执行操作,换句话说:IdlingResource
告诉Espresso主线程何时空闲并准备采取新操作。< / p>
从appcompat
库中排除support-v4
和espresso
:https://github.com/googlesamples/android-testing/issues/56
我认为您使用Android Camera
正在运行Intent
,因此它不包含在您的实际应用上下文中,它不会显示在您的应用活动/片段中。如果是,请尝试使用UiAutomator
和Espresso
框架。阅读:http://qathread.blogspot.com/2015/05/espresso-uiautomator-perfect-tandem.html
Espresso
尝试使用Robotium
,Appium
或其他没有此限制的检测框架。我已经在Espresso
,Robotium
和UiAutomator
使用,所以不要害怕混合使用它们。
希望有所帮助
答案 1 :(得分:0)
所以我能够解决我的问题。
问题是由invalidate()
的连续调用方法onDraw()
引起的。
相反,我将其替换为postInvalidateDelayed()
,并且对于某些条件(如动画)仅使用invalidate()
。
它帮了! :)
避免连续重新粉刷屏幕。