我正在声明一些视图,这些视图将在一些动画或缓慢加载后显示
Ex: - 操作栏上的搜索按钮被延迟显示在操作栏上,在显示的断言失败之前,它应该等待吗?
在棒棒糖中,我们有一个涟漪动画,然后显示一些视图,但在动画结束前断言失败,espresso应该等待所有视图和动画变得空闲吗? 当我使用自定义空闲资源并等待2秒时,它起作用,但那不是正确的方法。
//Its my custom idling resource which wait for 2000 millisec
EspressoSolo.sleep(200);
RecordingTest.getDefault().customTests(1, 1);
答案 0 :(得分:2)
我找到的大部分资源(如上图所示)链接到死页。
我发现了这篇博文,但它也链接到上面的死链接,但它证明是有用的,因为它提供了如何设置它的分步说明。
http://product.reverb.com/2015/06/06/disabling-animations-in-espresso-for-android-testing/
我一直有类似的问题,因为我有动画,我需要等待才能点击按钮等。后来我了解到Espresso建议在测试过程中禁用动画,正如Alexandre指出的那样。
您可以阅读如何将其添加到博客文章底部的运行配置中。
要在测试之前运行任务: 在下拉列表中显示要运行的内容(“app”或“Android Tests”或“Unit Test”),选择“编辑配置”,然后选择主要的“Android测试”配置。 靠近底部的是一个标有“发布之前:”的方框。点击“+”展开“添加新配置”对话框,然后选择“运行Gradle任务”。 对于Gradle Project选择您的应用程序,然后为“Tasks”输入grantAnimationPermission,它应自动完成。
或者,您可以转到移动设备或虚拟设备上的“开发者设置”,并将动画比例设置为关闭。
但请注意,我发现这不会禁用我的内嵌动画,如下所示:
new Handler().postDelayed(new Runnable() {
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1)
@Override
public void run() {
try {
layout_login.animate()
.translationY(0)
.alpha(1)
.setDuration(500)
.setInterpolator(new AccelerateDecelerateInterpolator());
} catch (Exception e) {
}
}
}, 1600);
答案 1 :(得分:0)
我正在复制Google教程指示我们做的事情:
在您的设备上,在“设置” - >“开发者”选项下,禁用以下3个设置:
窗口动画比例
过渡动画比例
Animator持续时间刻度
这会关闭动画并允许您的测试运行。