测试RecyclerView需要导入

androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.2.0'

使用示例

//actionOnItemAtPosition的第一个参数是recycleview的item位置
//第二个参数是对应的动作
Espresso.onView(ViewMatchers.withId(R.id.recyclerView)).perform(RecyclerViewActions.actionOnItemAtPosition<BaseViewHolder>(2, ViewActions.click()))

测试RecyclerView的item的子view则需要自定义Matcher

import android.content.res.Resources;
import android.view.View;
import androidx.recyclerview.widget.RecyclerView;
import org.hamcrest.Description;
import org.hamcrest.Matcher;
import org.hamcrest.TypeSafeMatcher;
import java.util.Objects;public class RecyclerViewMatcher {private final int recyclerViewId;public RecyclerViewMatcher(int recyclerViewId) {this.recyclerViewId = recyclerViewId;}public Matcher<View> atPosition(final int position) {return atPositionOnView(position, -1);}public Matcher<View> atPositionOnView(final int position, final int targetViewId) {return new TypeSafeMatcher<View>() {Resources resources = null;View childView;public void describeTo(Description description) {String idDescription = Integer.toString(recyclerViewId);if (this.resources != null) {try {idDescription = this.resources.getResourceName(recyclerViewId);} catch (Resources.NotFoundException var4) {idDescription = String.format("%s (resource name not found)", recyclerViewId);}}description.appendText("with id: " + idDescription);}public boolean matchesSafely(View view) {this.resources = view.getResources();if (childView == null) {RecyclerView recyclerView = view.getRootView().findViewById(recyclerViewId);if (recyclerView != null && recyclerView.getId() == recyclerViewId) {childView = Objects.requireNonNull(recyclerView.findViewHolderForAdapterPosition(position)).itemView;} else {return false;}}if (targetViewId == -1) {return view == childView;} else {View targetView = childView.findViewById(targetViewId);return view == targetView;}}};}
}

使用示例

Espresso.onView(RecyclerViewMatcher(R.id.recyclerView).atPositionOnView(3,R.id.button)).perform(ViewActions.click())

参考:

https://github.com/dannyroa/espresso-samples

Espresso之RecyclerView相关推荐

  1. Android Espresso(四)——RecyclerView

    文章目录 Android Espresso(四)--RecyclerView RecyclerViewActions API RecyclerView已定义API测试代码 RecyclerView自定 ...

  2. 安卓程序员都懂:如何用Espresso对UI界面测试?

    如果想学习使用Espresso测试Android应用程序UI,需要了解包括基础知识,AdapterViews,RecyclerViews等方面的知识,本文将是一份不错的教程. 作者写了关于Espres ...

  3. Android自动化测试技术——Espresso的使用

    配置 修改设置 先启用开发者选项,再在开发者选项下,停用以下三项设置: 窗口动画缩放 过渡动画缩放 Animator 时长缩放 添加依赖 在app/build.gradle文件中添加依赖 androi ...

  4. java espresso_Espresso 列表

    Espresso 为两种类型的列表(即适配器视图和回收器视图)提供了滚动到特定项目或对特定项目执行操作的机制. 在处理列表(尤其是使用 RecyclerView 或 AdapterView 对象创建的 ...

  5. 开源框架 ImageLoader +ListView+GridView+RecyclerView 浅解

    下载地址 链接:https://pan.baidu.com/s/1ebz99pcuvHg2bODgeOtSbg 提取码:ia39 一.导入jar包或者添加依赖 jar包地址 导入jar包:将下载的ja ...

  6. 安卓测试二(Espresso)

    Espresso 官网 ui测试,在androidTest下使用,需要连接手机 在写的时候,比如你写一个onView,在用Alt+Enter导入库的时候,应该注意导入静态的库,要不就直接Espress ...

  7. Espresso测试框架的使用

    文章目录 获取View 执行View的行为 检验View内容 简单例子 验证Toast 验证Dialog 验证目标Intent 访问Activity 提前注入Activity的依赖 添加权限 测试Vi ...

  8. Espresso指南一(Espresso下载、安装、设置、基础、速查表)

    Espresso 像下面一样写简洁.优美.可靠的Android UI测试: @Test public void greeterSaysHello() {onView(withId(R.id.name_ ...

  9. java espresso车架_Espresso UI自动化测试框架

    前言 Espresso是谷歌大力推荐的一套测试框架,从Android studio2.2版本开始,google就开始支持在as上espresso自动生成单元测试代码. Espresso测试运行速度很快 ...

最新文章

  1. 允许使用抽象类类型 isearchboxinfo 的对象_final关键字、抽象类以及接口
  2. poj 1324(BFS+状态压缩)
  3. 代码执行流水之循环展开优化
  4. hadoop常见错误即解决方法
  5. jsp servlet示例_Servlet和JSP中的文件上传示例
  6. 40种Javascript中常用的使用小技巧【转】
  7. 虚拟内存分页机制的地址映射
  8. pymysql.err.InternalError: (1054, Unknown column '27D24A3B' in 'where clause')之错误解决
  9. MCGS 无限配方数据存储及U盘导入导出-第一集
  10. mysql 1129 错误Host is blocked because of many connection errors; unblock with 'mysqladmin flush-host
  11. 揭秘防出轨软件 黑市卖到上万 安装容易卸载难
  12. powerDesigner修改mysql建表语句
  13. Win10安装Git并配置
  14. 计算机思维在化学上的应用,【科学思维】化隐性为显性思想在化学中的应用
  15. 百晓生兵器谱之公有云排名
  16. android实现QQ空间和QQ好友分享功能
  17. 手把手教你做一个APP应用(含源码)
  18. 没有项目管理经验,可以参加PMP考试?
  19. java8的lambda中的map相关操作
  20. 用Python学《微积分B》(多元函数Taylor公式)

热门文章

  1. iOS 直播流程概述
  2. iOS 直播间送礼物逻辑(礼物连击)
  3. 电脑提示MSVCP140.dll文件丢失的解决方法
  4. [BD 41-1629] </zynq_ultra_ps_e_0/SAXIGP3/HP1_QSPI> is excluded from all addressable master spaces.
  5. 论团队协作的一个小故事
  6. kubernetes dashboard
  7. Ambarella Ethernet PHY rtl9000 Linux driver 调试
  8. 戏说数据仓库,商业智能BI中数据仓库的本质是什么?
  9. 【ceph】ceph分布式存储MDS(各种状态、源码)
  10. ThingWorx入门