Espresso 简单入门

最近需要写一些 Android 的自动化测试用例. 就学习了一下 Espresso 框架的用法.

参考文章

环境配置

环境配置可以参考: Getting Started with Testing
其实只需要安装步骤建好文件夹, 然后在 gradle 文件中添加依赖即可.

这一步当中, 文档特地提到要先关闭动画, 不然可能会导致问题. 虽然不知道会导致什么问题, 但是血的教训告诉我文档让你做的一定要做. 打开开发者选项, 关闭以下三个选项:

  • 窗口动画缩放(Window animation scale)
  • 过渡动画缩放(Transition animation scale)
  • 动画程序时长缩放(Animator duration scale)

Espresso 的核心类

如果去看一些 Espresso 的例子. 你会看到类似下面的代码:

onView(withId(R.id.test)).perform(click()).check(matchers(withText("xxx")))

如果使用过 Hamcrest 应该会感到很亲切.
代码大量使用 static import 来提高可读性. 如果去掉 static import 的部分, 就变成这样:

Espresso.onView(ViewMatchers.withId(R.id.test))
        .perform(ViewActions.click())
        .check(ViewAssertion.matches(ViewMatchers.withText("xxx")))

其实包含了 Espresso 中重要的四个类1:

  • Espresso:
    跟 View 交互的入口(onView 或者 onData). 其实 Espresso 并不一定需要跟一个 View 绑定, 比如 pressBack
  • ViewMachers
    包含了很多实现 Matcher<? super View> 的对象. 通过 onView 和 ViewMathcers 可以在 View Hierarchy 中定位 View.
  • ViewActions
    顾名思义, 就是一些可以对 view 做的动作, 比如click, typeText. 使用方式就是作为参数传递给 ViewInteraction.preform()
  • ViewAssertions
    一系列 ViewAssertion 的集合, 可以作用参数传递给 ViewInteraction.check(). 通常你需要使用 matches assertion. 通过 ViewMatcher 来判断 View 的状态.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,246评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,428评论 25 708
  • 内容简介 其中包括20个最常用的对员工能力素质要求的具体行为描述,以及全方位、多角度的求职面试攻略;收录了宝洁、汇...
    少穻阅读 4,695评论 1 67