我正在断言一些视图,这些视图将在一些动画或加载缓慢后显示
示例:-搜索按钮在操作栏上延迟显示在操作栏上,在其显示的断言失败之前,它应该等待?
在lollipop中,我们有一个涟漪动画,之后显示了一些视图,但在动画完成之前断言失败,espresso应该等待所有视图和动画空闲,对吗?当我使用自定义空闲资源并等待2秒时,它可以工作,但这不是正确的方式。
//Its my custom idling resource which wait for 2000 millisec
EspressoSolo.sleep(200);
RecordingTest.getDefault().customTests(1, 1);
我找到的大多数资源(比如上面的那个)都链接到一个死页。
我发现了这篇博客文章,但它也链接到上面的死链接,但它被证明是有用的,因为它提供了一步一步的说明如何设置它。
http://product.reverb.com/2015/06/06/disabling-animations-in-espresso-for-android-testing/我一直有一个类似的问题,因为我有动画,我需要等待之前,我可以点击按钮等。后来我了解到Espresso建议在测试期间禁用动画,正如亚历山大指出的那样。
你可以在博客文章的底部阅读如何将它添加到你的运行配置。
让任务在测试之前运行:在显示要运行的内容("应用程序"或"Android测试"或"单元测试")的下拉菜单中,选择"编辑配置",然后选择主要的"Android测试"配置。靠近底部是一个标有"发射前:"的方框。点击"+"展开"Add New Configuration"对话框,选择"Run Gradle task"。对于Gradle Project,选择你的app,然后在"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);
我正在复制Google教程中指导我们做的事情:
在您的设备上,在设置->开发人员选项下禁用以下3个设置:
窗口动画缩放
转场动画缩放
动画持续时间尺度
这将关闭动画并允许您的测试运行。