【问题标题】:Slow down Espresso慢点意式浓缩咖啡
【发布时间】:2016-03-23 00:54:22
【问题描述】:

这是关于浓缩咖啡的。我正在模拟器上成功运行集成测试。我认为有些测试失败了,因为它运行得太快了。有没有办法减慢执行/播放速度?

【问题讨论】:

    标签: android automated-tests integration-testing instrumentation android-espresso


    【解决方案1】:

    测试失败导致加速是不可能的。 Espresso 可以将所有测试操作与被测应用程序同步。默认情况下,Espresso 会等待当前消息队列中的 UI 事件处理完毕,默认 AsyncTasks 完成,然后再进行下一个测试操作。但是,如果这对您的应用程序来说还不够,您可以告诉 Espresso 什么时候空闲,什么时候不空闲。为此,您必须:

    • 实施IdlingResource 界面。
    • 通过在测试设置中调用 Espresso.registerIdlingResource 向 Espresso 注册一个或多个 IdlingResource。

    如果您需要更多帮助,请联系我!!

    【讨论】:

      【解决方案2】:

      当您在 Android Studio 中录制 Espresso 测试时,当存在视图交互以处理延迟时,它会自动将 Sleep 语句添加到测试中。这是与 cmets 一起生成的方法:

      // Added a sleep statement to match the app's execution delay.
      // The recommended way to handle such scenarios is to use Espresso idling resources:
      // https://google.github.io/android-testing-support-library/docs/espresso/idling-resource/index.html
      
      try {
          Thread.sleep(700);
      } catch (InterruptedException e) {
          e.printStackTrace();
      }
      

      Link to the docs

      【讨论】:

        【解决方案3】:

        我也有这个问题。我通过从开发者选项中删除设备上的活动动画来解决。

        如果您的问题仍然存在,您可以在测试中使用sleep 来减慢速度。

        SystemClock.sleep(1000);
        

        【讨论】:

          【解决方案4】:

          哈哈...实际上 Espresso 只是这样工作的。您面临的问题是 UI 事件无法完成(例如,在从网络调用加载列表之前单击列表项)。 在这种情况下,您的资源是从其他线程加载的,您实际上可以执行 Thread.sleep(millis) 或更有效的 UiController 的 loopMainThreadForAtleast(millis) 方法来等待something to load(事件完成)。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-10-15
            • 1970-01-01
            • 2015-10-03
            • 1970-01-01
            相关资源
            最近更新 更多