Espresso不会等待动画完成断言

时间:2015-05-26 19:56:43

标签: android android-testing android-espresso

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

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

在棒棒糖中,我们有一个涟漪动画,然后显示一些视图,但在动画结束前断言失败,espresso应该等待所有视图和动画变得空闲吗? 当我使用自定义空闲资源并等待2秒时,它起作用,但那不是正确的方法。

//Its my custom idling resource which wait for 2000 millisec
EspressoSolo.sleep(200);
    RecordingTest.getDefault().customTests(1, 1);

2 个答案:

答案 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持续时间刻度

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