我必须使用自动用户界面测试工具和我之间的使用机器人与谷歌浓咖啡混淆。
两者之间的主要区别是什么? 是否存在一个特征而另一个不存在?
意式浓缩咖啡比机器人咖啡快得多,但只能在某些 SDK 版本上使用。
因此,如果你想要一个在所有设备上都可以使用的测试,那么就使用 Roboitum 吧。如果没有,去喝浓缩咖啡,别忘了你还要做一段时间的测试者。
充分披露: 我是浓缩咖啡的作者之一。
Espresso 和 Robodium 都是基于工具的框架,这意味着它们使用 Android 仪器来检查和交互测试中的活动。
在谷歌,我们开始使用机器人,因为它比股票仪器更方便(向 Robotium 开发者致敬)。但是,它不能满足我们对一个框架的需要,这个框架使得为开发人员编写 reliable测试 放松成为可能。
浓缩咖啡优于机器人的主要进展:
同步。默认情况下,检测测试逻辑运行在与 UI 操作(在 UI 线程上处理)不同的(检测)线程上。如果没有测试操作与 UI 更新的同步,测试将很容易出现不稳定-也就是说,由于时间问题,测试将随机失败。大多数测试作者忽略了这个事实,一些人添加了睡眠/重试机制,甚至很少有人实现更复杂的线程安全代码。这些都不理想。Espresso 通过将测试操作和断言与被测应用程序的 UI 无缝同步来保证线程安全。机器人试图用睡眠/重试机制来解决这个问题,这种机制不仅不可靠,而且会导致测试运行得比必要的慢。
空气污染指数。浓缩咖啡有一个小的,定义良好和可预测的 API,这是开放的定制。您告诉框架如何使用标准 Hamcrest 火柴定位 UI 元素,然后指示它执行操作或检查目标元素上的断言。您可以将其与 Robotium 的 API 进行对比,测试作者需要从30 + click 方法中进行选择。此外,Robodium 公开了一些危险的方法,比如 getCurrentActivity (current 到底是什么意思?)和 getView,它允许您操作主线程之外的对象(参见上面的观点)。
清除故障信息。当出现故障时,浓缩咖啡努力提供丰富的调试信息。此外,您可以使用自己的故障处理程序自定义 Espresso 处理故障的方式。我已经有一段时间没有尝试过了,但是之前的 Robotium 版本遇到了不一致的故障处理(例如,clickOnView 方法会吞噬 SecurityException)。
与以前的答案相反,所有 API 版本都支持浓缩咖啡,用户数量相当多(参见: http://developer.android.com/about/dashboards/index.html)。它可以在一些旧版本上工作,但是在那些版本上进行测试将是一种资源浪费。说到测试... Espresso 的每一个改变都会经过一个全面的测试套件(覆盖率超过95%)以及大多数由 Google 开发的 Android 应用程序的测试。