参考: Android单元测试(四):Robolectric框架的使用 官网 ---- 通过实现一套 JVM 能够运行的 Android 代码,从而实现脱离 Android 环境进行测试。...BuildConfig.class) public class SandwichTest { } 它可以方便地对 Activity,Fragment,Service,BroadcastReceiver 进行单元测试...onClick(View view) { startActivity(new Intent(MainActivity.this, LoginActivity.class)); } }); 单元测试时框架...(MyAwesomeActivity.class).create().start().resume().visible().get(); 如果需要和页面控件交互,需要调用 visible() 来保证在单元测试中可以交互...robolectric.dependency.dir — robolectric.offline 时,配置运行时依赖文件所在的文件夹路径。
文章目录 闲话单元测试 日志输出 网络请求篇 数据库篇 Love UT 1 闲话单元测试 我们经常讲“前人种树,后人乘凉”,然而在软件开发中,往往呈现出来的却是截然相反的景象,我们在绩效和指标的驱使下...所以,为了打破轮回,从一点一滴做起吧,“树”的种类众多,作为任意一名普通的软件工程师,种好单元测试这棵树,便是撒下一片荫凉。 关于单元测试,很多人心中会有以下几个疑问: (1)为什么要写?...(4)我要怎么写UT(特别是Android单元测试)? 关于第一个问题,首先我们反问自己几个问题: 以上,便是写好单元测试的意义。...(2)当你写单元测试的时候,是不是发现很多代码无法测试?.../robolectric/issues/1890 最后,行此文时,悲痛欲绝,越长大越不会表达自己的情感,此文送给肚中远去的小小猴子,此生无缘。
来到RecyclerView的addOnItemTouchListener方法 /** * Add an {@link OnItemTouchListener} to intercept...Once a listener * returns true from * {@link OnItemTouchListener#onInterceptTouchEvent(RecyclerView..., MotionEvent)} its * {@link OnItemTouchListener#onTouchEvent(RecyclerView, MotionEvent)} method...事件中,OnItemTouchListener不能接受到ACTION_DOWN事件 上述事件分发的方法,调用有点乱,没什么头绪,那么我们先来看OnItemTouchListener这个对象,该对象在ItemTouchHelper...中 private final OnItemTouchListener mOnItemTouchListener = new OnItemTouchListener()
) 【Android 事件分发】ItemTouchHelper 源码分析 ( OnItemTouchListener 事件监听器源码分析 ) ---- 文章目录 Android 事件分发 系列文章目录...一、OnItemTouchListener 事件监听器引入 二、OnItemTouchListener 触摸事件拦截方法 onInterceptTouchEvent 1、onInterceptTouchEvent...的 ItemTouchHelper 的核心 ; OnItemTouchListener 是 RecyclerView 中定义的作用与条目组件的触摸监听器 , 主要是拦截触摸事件方法 onInterceptTouchEvent...mOnItemTouchListener = new OnItemTouchListener() { // 拦截触摸事件 , 处理拦截机制 @Override...event) { } } 中实现的 RecyclerView.OnItemTouchListener 接口的 onInterceptTouchEvent 方法 , 主要是用于作用与条目上的触摸事件的拦截
的使用 关于代码 1 关于Robolectric3.0 作为一个软件开发攻城狮,无论你多不屑多排斥单元测试,它都是一种非常好的开发方式,且不谈TDD,为自己写的代码负责,测试自己写的代码,在自己力所能及的范围内提高产品的质量...所以,写好单元测试,爱惜自己的代码,爱惜颜值高的QA妹纸,爱惜有价值的产品(没价值的、政治性的、屁股决定脑袋的产品滚粗),人人有责!...对于Android app来说,写起单元测试来瞻前顾后,一方面单元测试需要运行在模拟器上或者真机上,麻烦而且缓慢,另一方面,一些依赖Android SDK的对象(如Activity,TextView等)...以上代码的单元测试用例: ? 6 Shadow的使用 Shadow是Robolectric的立足之本,如其名,作为影子,一定是变幻莫测,时有时无,且依存于本尊。...参考文章 http://robolectric.org https://github.com/robolectric/robolectric http://tech.meituan.com/Android_unit_test.html
) 【Android 事件分发】ItemTouchHelper 源码分析 ( OnItemTouchListener 事件监听器源码分析 ) 【Android 事件分发】ItemTouchHelper...源码分析 ( OnItemTouchListener 事件监听器源码分析 二 ) ---- 文章目录 Android 事件分发 系列文章目录 一、onTouchEvent 事件消费源码分析 1、onTouchEvent...事件监听器源码分析 ) 主要分析了 给 RecyclerView 设置的 OnItemTouchListener 监听器的 onInterceptTouchEvent 触摸事件拦截方法 , 本篇博客中主要分析另外一个...* 最后的触摸事件和初始触摸事件之间的坐标差异 , 偏移值 . */ float mDx; float mDy; private final OnItemTouchListener...mOnItemTouchListener = new OnItemTouchListener() { // 拦截触摸事件 , 处理拦截机制 @Override
方法 , 为 RecyclerView 设置了触摸监听器 , 该触摸监听器是定义在 ItemTouchHelper 中的成员变量 private final OnItemTouchListener mOnItemTouchListener...implements RecyclerView.OnChildAttachStateChangeListener { private final OnItemTouchListener...mOnItemTouchListener = new OnItemTouchListener() {} /** * Attaches the ItemTouchHelper to...the provided RecyclerView....列表 mRecyclerView = recyclerView; if (recyclerView !
recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean...我们只需要改OnItemTouchListener这个对象就可以了,修改后如下: private final RecyclerView.OnItemTouchListener mOnItemTouchListener...= new RecyclerView.OnItemTouchListener() { private boolean onClick; @Override...= null; } @Override public void onTouchEvent(RecyclerView recyclerView, MotionEvent...滑动和ViewHodler改变时调用 public void attachToRecyclerView(@Nullable RecyclerView recyclerView) {
RecycleView 中被附加或者移除的时候该监听器就会被通知. interface RecyclerView.OnItemTouchListener 项目触摸监听器的作用 : RecycleView..., 会接收于此相关的信息. class RecyclerView.SimpleOnItemTouchListener RecycleView.OnItemTouchListener 接口的实现类, 有一个空的方法体... listener) Remove an RecyclerView.OnItemTouchListener. void removeOnScrollListener... listener) Add an RecyclerView.OnItemTouchListener to intercept touch events before they are dispatched... listener) Remove an RecyclerView.OnItemTouchListener.
Robolectric:一个单元测试框架,可以清除Android SDK(通过shadow技术),以便您可以测试驱动Android应用程序的开发,测试JVM内部运行,用例执行速度很快。...1、选取合适的测试框架 作者开始在业务中尝试使用Robolectric测试框架,初心主要在于他的特性: Robolectric Test-Drive Your Android Code Running...compileSdkVersion 23的不能使用Robolectric:3.0的版本,只能使用Robolectric:3.2.2以上的。...Robolectric首次启动下载maven相关的依赖失败。...违背上面的单元测试特性之运行稳定,衡量再三,还是决定放弃Robolectric了,另寻它径。
分享主题 1、Android单元测试简介和意义 2、Android单元测试常用框架介绍 3、结合业务开展Android单元测试 问答环节 1、多少人开发多少人写单元测试case?...答:Espresso、Robolectric, Mockito, Powermock、JUnit。 3、空方法不用模拟吧? 答:空方法不需要模拟,刚才说的是返回为void的方法。...7、怎么保证单元测试的质量以及可维护性? 答:见《单元测试的艺术》一书中的优秀的单元测试特性。 8、开发有必要学搞测试框架吗?...11、不用robolectric,如何测试SQLite? 答:测试SQLite不是只能robolectric来完成的,其他工具一样可以完成。...15、sdk25对应的robolectric是哪个版本? 答:3.2.2以上,我记得好像最新是这个版本。
相反地,可以通过设置RecyclerView的RecyclerView.ItemAnimator来为条目增加动画效果。...相反地,在RecyclerView中必须自定义实现RecyclerView.Adapter并为其提供数据集合。...但是,很遗憾的是在RecyclerView中,并没有提供这样的接口,不过,提供了另外一个接口RcyclerView.OnItemTouchListener,用来响应条目的触摸事件。...RecyclerView组件 RecyclerView.Adapter 确切的说,Adapter扮演着两个角色。...public void setOnItemLongClickListener(OnItemLongClickListener listener) Item长按事件监听 但是存在这样一个触摸事件的监听RecyclerView.OnItemTouchListener
我们现在讲的是使用JUnit和Robolectric等其他的一些框架,写可以在我们开发环境的JVM上面直接运行的单元测试。...使用Robolectric框架,这个框架基本可以理解为在JVM上面实现了一套安卓的模拟环境,同时给安卓相关的类增加了其他一些增强的功能,以方便做单元测试。...之所以尽量不用Robolectric,是因为Robolectric虽然相对于Instrumentation testing来说快多了。...因此,刚开始的时候,从Robolectric开始完全是OK的。 以上就是现在我们这边单元测试用到的几个基本技术:JUnit4 + Mockito + Dagger2 + Robolectric。...在做单元测试的时候,这些都是mock。 对于这个流程,我们做了如下的单元测试: CheckoutActivity启动单元测试:通过Robolectric提供的方法,启动一个Activity。
recyclerview = (RecyclerView) findViewById(R.id.recyclerview); 2.设置显示规则 recyclerview.setLayoutManager...而 RecyclerView 也是类似的步骤: 首先继承RecyclerView.Adapter类; 实现三个抽象方法; 创建一个静态的 ViewHolder。...adapter封装 其实很早之前写过一篇关于 RecyclerView 适配器的封装,所以这不再赘述了,传送门:RecyclerView的通用适配器 使用 demo 可以查看:Github 【RecyclerView...通用适配器演示】 吐槽 OnItemTouchListener 什么鬼?...好吧,翻遍了 API 列表,就找到了个 OnItemTouchListener ,这特么什么鬼,我干嘛要对每个 item 监听触摸屏事件。
Android Studio和Gradle Android Plugin可以为单元测试提供支持,但是需要我们可以配置一些东西。 JUnit JUnit是一个常用的单元测试Lib。...它可以让写出来的单元测试很容易的理解。值得注意的是,这些特殊的单元测试只对业务逻辑测试有用,而与Android SDK相关的则不会生效。...Robolectric 我们可以使用Robolectric来编写使用Android SDK和资源的测试。而这些测试任务会跑在一个JVM中。...:robolectric:3.0' testCompile'org.robolectric:shadows-support:3.0' } Robolectric测试的类必须创建在src/test...这也就是单元测试和功能测试之间的区别。
parent, State state) onDraw(Canvas c, RecyclerView parent, State state) onDrawOver(Canvas c, RecyclerView...()方法用来监听每个item的点击事件,我们可以自定义一个RecyclerView.OnItemTouchListener进行相应的逻辑处理,达到header的点击目的。...下面是自定义的RecyclerView.OnItemTouchListener的完整代码。...public class StickyRecyclerHeadersTouchListener implements RecyclerView.OnItemTouchListener { private...RecyclerView之ItemDecoration由浅入深 深入理解 RecyclerView 系列之一:ItemDecoration StickHeaderItemDecoration--RecyclerView
override fun getMovementFlags(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder): Int {...override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder...: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean {...(recyclerView !...5.3、mOnItemTouchListener private final OnItemTouchListener mOnItemTouchListener = new OnItemTouchListener
直接在build.gradle中配置repo地址,不过这个问题曾经浪费好几天的时间 testOptions { unitTests.all { systemProperty 'robolectric.dependency.repo.url...', 'https://mirrors.huaweicloud.com/repository/maven/' systemProperty 'robolectric.dependency.repo.id...', 'huawei' } } 另外,在单元测试中,如果用到了android的资源文件,则需要在build.gradle中配置 includeAndroidResource = true 加上上面的仓库配置...,可以直接使用: testOptions { unitTests.all { systemProperty 'robolectric.dependency.repo.url',...'https://mirrors.huaweicloud.com/repository/maven/' systemProperty 'robolectric.dependency.repo.id
override fun getMovementFlags(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder): Int {...override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder...() { override fun getItemOffsets(outRect: Rect, view: View, recyclerView: RecyclerView, state: RecyclerView.State...: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean {...5.3、mOnItemTouchListener private final OnItemTouchListener mOnItemTouchListener = new OnItemTouchListener
AndroidX Test 提供了跨测试环境的通用测试 APIs,包括仪器测试和 Robolectric 测试。...从 Robolectric 4.0 开始,它们也可用于本地 JVM 测试。 考虑以下使用情形,我们启动登录页面,输入正确的用户名和密码,并确保进入主屏幕。...这个测试可以在使用 Robolectric 或任何真实或虚拟设备的本地 JVM 上运行。...你可能决定只在真机上运行一些较大的测试,同时在模拟器上运行大量较小的单元测试,比如 Robolectric,它可以在本地 JVM 上更快地运行测试。...: github.com/robolectric… Robolectric: github.com/robolectric… AndroidX Test: github.com/android/and…
领取专属 10元无门槛券
手把手带您无忧上云