我正在寻找 Android UI 自动化的测试框架,我偶然发现了 UI Automator和 Espresso,这是我感到困惑的部分-
UI Automator
Espresso
Android
所以我的疑问是
如果您只测试一个应用程序,那么浓缩咖啡。
如果您正在测试多个应用程序或其与其他应用程序或系统的集成,则使用 UiAutomator。
当使用 UIAutomator 时,您必须使用18 + API,而使用 Espresso 时,您可以使用最低的 API 8。
如 Android 文档所述,多应用程序测试应该使用 UIAutomator 完成,而如果您只希望测试在您自己的应用程序包中运行,则可以使用 Espresso。
在 这份文件的页面的底部,您可以找到介绍,以及这两种测试样式的示例。
UiAutomator-功能强大,具有良好的外部操作系统集成,例如可以打开和关闭 WiFi,并在测试期间访问其他设置,但缺乏向下兼容,因为它需要果冻豆或更高。但是,也缺乏详细的视图访问,所以可以说它可能更多的是一个纯黑盒测试。当浓缩咖啡有访问视图内部(见下文)。此 developer.android.com 适用于「测试多个应用程式的用户界面」
Espresso-比 Ui 自动化程序重量轻一些,支持2.2 Froyo,它还有一个流畅的 api 和强大的 hamcrest (https://github.com/hamcrest)集成,使代码更易读、更易扩展(它比 UI 自动化程序更新)。它不能进行系统集成测试,但可以进行视图内部测试,例如可以测试一个 webview (对于混合应用测试或者 webview 重测试很有用)。与 UI Automator 相比,灰盒测试更多一些。对于“测试单个应用程序的用户界面”的 developer.android.com ,建议这样做。从 Android Studio 2.2开始,它现在提供 UI 测试记录(如 UIAutomator)
事实上,你不需要选择。UIAutomator 和 Espresso 使用相同的检测运行器,因此您可以在单个测试中使用来自它们的命令。 Espresso 在 UI 上有多种匹配器、断言和动作,而自动化程序没有:
意式咖啡小抄
Espresso 是在单独的线程中运行的,与其他测试框架相比,它的速度非常快。
总结: 在测试中同时使用它们,Espresso 是 main,UIAutomator 是 OS 集成的附加工具。
我发现了一篇有趣的文章,谈到了为什么你应该同时使用它们:
Http://qathread.blogspot.com/2015/05/espresso-uiautomator-perfect-tandem.html
Espresso对我来说已经足够了,但出于某些原因,比如测试应用程序通知,我会在几周内学习 uiautomator。
uiautomator
花点时间
Https://github.com/googlesamples/android-testing/tree/master/ui
Http://developer.android.com/training/testing/ui-testing/espresso-testing.html
Http://developer.android.com/training/testing/ui-testing/uiautomator-testing.html
为了快速了解这两者是如何工作的,让我们给出一个例子。让我们尝试使用 UIAutomator和 Espresso在棒棒糖上找到并单击一个标题为“ Start”的按钮:
UIAutomator
FindObject (new UiSelector () . text (“ START”)) . click () ;
R.string.start
textAllCaps=true
OnView (withText (R.string.start))
TL: DR;
UIAutomator 以低于 Espresso 的风格搜索视图——通过 Instruments 机制并遍历视图层次结构的 AccessibilityNodeInfo树。轮到浓缩咖啡时,它通常会遍历视图层次结构本身。
AccessibilityNodeInfo
使用 Espresso 的一个关键好处是它提供了测试动作与您正在测试的应用程序的 UI 的自动同步。浓缩咖啡能够检测主线程何时处于空闲状态,因此它能够在适当的时候运行您的测试命令,从而提高测试的可靠性。此功能还使您不必在测试代码中添加任何计时变通方法,例如 Thread.sleep ()。
Espresso 测试框架是一个基于工具的 API,可以与 AndroidJUnitRunner 测试运行程序一起工作。
资料来源: https://developer.android.com/training/testing/ui-testing/espresso-testing.html