Espresso不会等待动画完成断言失败



我正在断言一些视图,这些视图将在一些动画或加载缓慢后显示

示例:-搜索按钮在操作栏上延迟显示在操作栏上,在其显示的断言失败之前,它应该等待?

在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个设置:

窗口动画缩放

转场动画缩放

动画持续时间尺度

这将关闭动画并允许您的测试运行。

相关内容

  • 没有找到相关文章

最新更新