我必须使用自动UI测试工具,而在使用Robotium和Google Espresso之间却感到困惑。
两者之间的主要区别是什么?一个功能中是否存在其他功能?
我必须使用自动UI测试工具,而在使用Robotium和Google Espresso之间却感到困惑。
两者之间的主要区别是什么?一个功能中是否存在其他功能?
Answers:
全面披露:我是Espresso的作者之一。
Espresso和Robotium都是基于工具的框架,这意味着它们使用Android Instrumentation来检查被测活动并与之交互。
在Google,我们从使用Robotium开始,因为它比股票工具更方便(这要由Robotium开发人员来完成)。但是,它不能满足我们对使开发人员轻松编写可靠测试的框架的需求。
浓缩咖啡超越机械人的主要进步:
同步。默认情况下,检测测试逻辑与UI操作(在UI线程上处理)在不同的(仪器)线程上运行。如果没有将测试操作与UI更新同步,则测试将容易出错-即由于计时问题而随机失败。大多数测试作者都忽略了这一事实,有些人增加了睡眠/重试机制,甚至更少的人实现了更复杂的线程安全代码。这些都不是理想的。Espresso通过无缝地将测试操作和断言与被测应用程序的UI同步来维护线程安全。Robotium尝试通过睡眠/重试机制解决该问题,该机制不仅不可靠,而且还会导致测试运行速度比必要的慢。
API。Espresso具有一个小型,定义明确且可预测的API,可以自定义。您将告诉框架如何使用标准hamcrest匹配器定位UI元素,然后指示其执行操作或检查目标元素上的断言。您可以将它与Robotium的API进行对比,后者要求测试作者从30多种点击方法中进行选择。此外,Robotium公开了危险的方法,例如getCurrentActivity(无论如何当前是什么意思?)和getView,它们使您可以在主线程之外的对象上进行操作(请参见上面的要点)。
清除故障信息。发生故障时,Espresso会努力提供丰富的调试信息。此外,您可以使用自己的故障处理程序自定义Espresso处理故障的方式。我已经有一段时间没有尝试过,但是早期版本的Robotium遇到了不一致的失败处理(例如,clickOnView方法将吞并SecurityExceptions)。
与先前的答案相反,具有大量用户的所有API版本均支持Espresso(请参阅:http : //developer.android.com/about/dashboards/index.html)。它适用于某些较旧的版本,但是对这些版本进行测试将浪费资源。谈到测试... Espresso的每项更改都经过全面的测试套件(覆盖率超过95%)以及Google开发的大多数android应用程序的测试。
Espresso比Robotium快得多,但仅适用于某些SDK版本。
因此,如果您想要一个适用于所有设备的测试,请选择Roboitum。如果没有,那就去意式浓缩咖啡吧,别忘了您仍然会成为Beta测试人员。