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