过渡动画比例不会禁用应用程序内的动画

Jav*_*per 7 navigation animation android android-espresso

我在做一些 Espresso UI 测试时遇到了一个问题:我想在我的应用程序中禁用动画,这样我就不需要设置超时/需要等待动画完成。

在我的 android 设备上的开发人员选项中禁用 Window 动画比例、过渡动画比例、Animator 持续时间比例不会在使用 android 导航组件在片段之间导航时禁用动画。

动画设置如下:

<action
    android:id="@+id/confirmationAction"
    app:destination="@id/confirmationFragment"
    app:enterAnim="@anim/slide_in_right"
    app:exitAnim="@anim/slide_out_left"
    app:popEnterAnim="@anim/slide_in_left"
    app:popExitAnim="@anim/slide_out_right" />
Run Code Online (Sandbox Code Playgroud)

如何在运行 espresso UI 测试时禁用此动画?

更新:

我按照谷歌的这个指南关于使用导航组件在片段之间导航。

然后我查看了谷歌关于用 Espresso 测试我的应用程序的指南我发现的第一个指南第二个指南中,第一点是通过开发人员选项禁用动画,因此我认为这是正确的方法禁用动画

Jav*_*per 0

经过更多研究,我发现 Espresso 在执行断言之前会自动等待 UI 线程上的所有动画完成。

通常,如果您使用普通动画,则无需执行任何操作。

如果您必须等待服务调用在 Espresso 测试中返回值,您可以编写一些代码来 (kotlin) 扩展 ViewInteraction 类。在扩展类中,您可以执行 check 方法并捕获任何错误。如果出现错误,您可以给出一个小的超时(20ms),然后尝试使用 while 循环再次执行它。如果 2-3 秒后仍然有异常,则可以抛出该异常