Espresso之RecyclerView
测试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相关推荐
- Android Espresso(四)——RecyclerView
文章目录 Android Espresso(四)--RecyclerView RecyclerViewActions API RecyclerView已定义API测试代码 RecyclerView自定 ...
- 安卓程序员都懂:如何用Espresso对UI界面测试?
如果想学习使用Espresso测试Android应用程序UI,需要了解包括基础知识,AdapterViews,RecyclerViews等方面的知识,本文将是一份不错的教程. 作者写了关于Espres ...
- Android自动化测试技术——Espresso的使用
配置 修改设置 先启用开发者选项,再在开发者选项下,停用以下三项设置: 窗口动画缩放 过渡动画缩放 Animator 时长缩放 添加依赖 在app/build.gradle文件中添加依赖 androi ...
- java espresso_Espresso 列表
Espresso 为两种类型的列表(即适配器视图和回收器视图)提供了滚动到特定项目或对特定项目执行操作的机制. 在处理列表(尤其是使用 RecyclerView 或 AdapterView 对象创建的 ...
- 开源框架 ImageLoader +ListView+GridView+RecyclerView 浅解
下载地址 链接:https://pan.baidu.com/s/1ebz99pcuvHg2bODgeOtSbg 提取码:ia39 一.导入jar包或者添加依赖 jar包地址 导入jar包:将下载的ja ...
- 安卓测试二(Espresso)
Espresso 官网 ui测试,在androidTest下使用,需要连接手机 在写的时候,比如你写一个onView,在用Alt+Enter导入库的时候,应该注意导入静态的库,要不就直接Espress ...
- Espresso测试框架的使用
文章目录 获取View 执行View的行为 检验View内容 简单例子 验证Toast 验证Dialog 验证目标Intent 访问Activity 提前注入Activity的依赖 添加权限 测试Vi ...
- Espresso指南一(Espresso下载、安装、设置、基础、速查表)
Espresso 像下面一样写简洁.优美.可靠的Android UI测试: @Test public void greeterSaysHello() {onView(withId(R.id.name_ ...
- java espresso车架_Espresso UI自动化测试框架
前言 Espresso是谷歌大力推荐的一套测试框架,从Android studio2.2版本开始,google就开始支持在as上espresso自动生成单元测试代码. Espresso测试运行速度很快 ...
最新文章
- 允许使用抽象类类型 isearchboxinfo 的对象_final关键字、抽象类以及接口
- poj 1324(BFS+状态压缩)
- 代码执行流水之循环展开优化
- hadoop常见错误即解决方法
- jsp servlet示例_Servlet和JSP中的文件上传示例
- 40种Javascript中常用的使用小技巧【转】
- 虚拟内存分页机制的地址映射
- pymysql.err.InternalError: (1054, Unknown column '27D24A3B' in 'where clause')之错误解决
- MCGS 无限配方数据存储及U盘导入导出-第一集
- mysql 1129 错误Host is blocked because of many connection errors; unblock with 'mysqladmin flush-host
- 揭秘防出轨软件 黑市卖到上万 安装容易卸载难
- powerDesigner修改mysql建表语句
- Win10安装Git并配置
- 计算机思维在化学上的应用,【科学思维】化隐性为显性思想在化学中的应用
- 百晓生兵器谱之公有云排名
- android实现QQ空间和QQ好友分享功能
- 手把手教你做一个APP应用(含源码)
- 没有项目管理经验,可以参加PMP考试?
- java8的lambda中的map相关操作
- 用Python学《微积分B》(多元函数Taylor公式)
热门文章
- iOS 直播流程概述
- iOS 直播间送礼物逻辑(礼物连击)
- 电脑提示MSVCP140.dll文件丢失的解决方法
- [BD 41-1629] </zynq_ultra_ps_e_0/SAXIGP3/HP1_QSPI> is excluded from all addressable master spaces.
- 论团队协作的一个小故事
- kubernetes dashboard
- Ambarella Ethernet PHY rtl9000 Linux driver 调试
- 戏说数据仓库,商业智能BI中数据仓库的本质是什么?
- 【ceph】ceph分布式存储MDS(各种状态、源码)
- ThingWorx入门