gpt4 book ai didi

android - 谷歌 Espresso 或机器人

转载 作者:IT老高 更新时间:2023-10-28 13:01:35 25 4
gpt4 key购买 nike

我必须使用自动化 UI 测试工具,我在使用 Robotium 和 Google Espresso 之间感到困惑。

两者之间的主要区别是什么?是否有一个存在而另一个不存在的功能?

最佳答案

全面披露:我是 Espresso 的作者之一。

Espresso 和 Robotium 都是基于仪器的框架,这意味着它们使用 Android Instrumentation检查被测 Activity 并与之交互。

在 Google,我们一开始使用的是 Robotium,因为它比标准工具更方便(向 Robotium 开发人员致敬)。但是,它并不能满足我们对让开发人员编写可靠测试轻松的框架的需求。

Espresso 相对于 Robotium 的主要进步:

  1. 同步。默认情况下,检测测试逻辑在与 UI 操作(在 UI 线程上处理)不同的(检测)线程上运行。如果没有将测试操作与 UI 更新同步,测试将容易出现不稳定 - 即由于时间问题而随机失败。大多数测试作者忽略了这个事实,一些添加了休眠/重试机制,甚至更少的人实现了更复杂的线程安全代码。这些都不是理想的。 Espresso 通过将测试操作和断言与被测应用程序的 UI 无缝同步来确保线程安全。 Robotium 试图通过 sleep /重试机制来解决这个问题,这不仅不可靠,而且会导致测试运行得比必要的慢。

  2. API。 Espresso 有一个小型、定义明确且可预测的 API,可以进行定制。您告诉框架如何使用标准 hamcrest matchers 定位 UI 元素然后指示它执行操作或检查目标元素上的断言。您可以将此与 Robotium 的 API 进行对比,在该 API 中,测试作者应从 30 多种点击方法中进行选择。此外,Robotium 还公开了一些危险的方法,例如 getCurrentActivity(current 到底是什么意思?)和 getView,它们允许您在主线程之外对对象进行操作(参见上面的一点)。

  3. 清除故障信息。 Espresso 努力在发生故障时提供丰富的调试信息。此外,您可以使用自己的故障处理程序自定义 Espresso 处理故障的方式。我已经有一段时间没有尝试过了,但是以前版本的 Robotium 遇到了不一致的故障处理(例如 clickOnView 方法会吞下 SecurityExceptions)。

与之前的答案相反,所有拥有大量用户的 API 版本都支持 Espresso(请参阅:http://developer.android.com/about/dashboards/index.html)。它适用于一些旧版本,但对这些版本进行测试会浪费资源。说到测试... Espresso 会通过一个全面的测试套件(覆盖率超过 95%)以及 Google 开发的大多数 Android 应用程序对每一个更改进行测试。

关于android - 谷歌 Espresso 或机器人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20046021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com