espresso

Android 自动化测试资料汇总

瘦欲@ 提交于 2019-12-01 05:41:16
android常用自动化测试框架 Android UI 自动化测试 使用uiautomator做UI测试 . 在 Android studio 上运用 UI Automator 执行自动化测试 Android Espresso(UI自动化测试)的搭建 Android UI 自动化测试实现过程 android 的 Testing Support Library 测试支持包(库) 自动化测试框架思路简单分享 Android自动化测试之Athrun:用例分析 Android自动化测试-cafe自动化测试框架学习(一) Zinc30 几种常见的Android自动化测试框架及其应用 腾讯开源 UI 自动化测试框架 FAT Soloπ 自动化测试工具 来源: oschina 链接: https://my.oschina.net/u/113858/blog/714627

android API reference(api参考)

穿精又带淫゛_ 提交于 2019-12-01 04:14:52
Android API 提供了14和API模块: Android Support Library :(Android支持库)提供多种Android特性和实用程序api,这些特性和api兼容多种平台版本。 AndroidX :官网介绍:不与操作系统绑定的Android api的重构版本。 查阅资料:AndroidX是Android Support Library的一个主要改进。像Support Library一样,AndroidX是在AndroidOS之外单独提供的,并且根据Android不同版本提供向后兼容能力。详情请参阅:https://www.jianshu.com/p/433979098860 AndroidX Test :( AndroidX 测试)包括用于测试Android应用程序的api,包括Espresso、JUnit Runner、JUnit4规则和UI Automator。 Architecture Components (架构组件):包括用于各种核心应用程序组件的api,例如管理UI组件生命周期、数据持久性、视图模型等的api。 Android Automotive Library (引擎库):提供用于构建Android低层应用程序的api。 Databinding Library (数据绑定库):包含api,以帮助您编写声明性布局

设计模式之装饰者模式

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-30 05:58:05
  今天我们来学习一下装饰者模式。作为一名程序猿,相信许多人都跟我一样,在平时写代码的过程中,习惯使用继承。但是继承有时候会出现非常严重的问题,不过,没担心。装饰者模式将会给爱用继承的我们一个全新的设计眼界! 一、星巴兹咖啡的故事   我们通过一个生动有趣的例子来引出我们今天的主角--装饰者模式。    1、 现在呢,有一个咖啡馆,它有一套自己的订单系统,当顾客来咖啡馆的时候,可以通过订单系统来点自己想要的咖啡。他们原先的设计是这样子的:    2、 此时、咖啡馆为了吸引更多的顾客,需要在订单系统中允许顾客选择加入不同调料的咖啡,例如:蒸奶(Steamed Milk)、豆浆(Soy)、摩卡(Mocha,也就是巧克力风味)或覆盖奶泡。星巴兹会根据所加入的调料收取不同的费用。所以订单系统必须考虑到这些调料部分。   下面是他们的第一次尝试:   这种设计肯定是不行的,简直分分钟把人逼疯的节奏,有木有!    3、 这时,有个人提出了新的方案,利用实例变量和继承,来追踪这些调料。     具体为:先从Beverage基类下手,加上实例变量代表是否加上调料(牛奶、豆浆、摩卡、奶泡……),      这种设计虽然满足了现在的需求,但是我们想一下,如果出现下面情况,我们怎么办,     ①、调料价钱的改变会使我们更改现有代码。     ②、一旦出现新的调料,我们就需要加上新的方法

设计模式-装饰者模式

与世无争的帅哥 提交于 2019-11-27 10:27:40
定义 装饰者模式动态地将责任责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。 实现要点 装饰器与被装饰的类需要继承自相同接口,来达到类型匹配。装饰器持有被装饰的类的实例。 代码实例 /** * 基础组件 */ abstract class Beverage { private String description = "Unknown Beverage"; public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public abstract double cost(); } /** * 装饰器基类 */ abstract class Decorator extends Beverage { @Override public abstract String getDescription(); } /** * 被装饰的类 */ class Espresso extends Beverage { public Espresso() { setDescription("Espresso"); } @Override public double

设计模式之装饰者模式

混江龙づ霸主 提交于 2019-11-26 07:31:23
首先让我们看一下装饰者模式(我爱叫他套娃模式)的概念:动态的将责任附加到对象上, 若要扩展功能,装饰者 提供了比继承者更有弹性的集成方案。 什么?没看懂?没关系,最后再来看这个概念,想让让我们来看一个咖啡屋项目(就是点各式 各样的咖啡)。 原本的设计如下: 看似很好的设计,但是别忘了,买咖啡时候我们会让他们给我们加一系列的调料,例如蒸奶、 摩卡......。所以,在这时咖啡店的设计就变成了,如下: 不错,你看到了 类爆炸 ! 好啦,现在有对这个系统做出了改进,如下: 好啦,现在这个设计相比之前的的确好了许多,但是如果我们要修改配料呢?那么就必须修改 超类,这时候就违反了一条 设计原则:类应该对扩展开放,对修改关闭 ! 所以这个时候,装饰者模式单诞生了!!!!! 来看个例子: 如果顾客现在要一杯摩卡和奶泡深培咖啡。那么,要做的是: ①拿一个深培咖啡(DarkRoast)对象 ②以摩卡(Mocha)对象装饰它 ③以奶泡(Whip)装饰它 ④调用cost()方法,并依赖委托(delegate)将调料的几千加上去 如何工作? ①以DarkRoast对象开始 ②顾客想要摩卡(Mocha),所以建立一个Mocha对象,并用它将DarkRoast对象包起来 ③顾客也想要奶泡(Whip),所以建立一个Whip装饰者,并用它将Mocha对象包起来。别 忘了,DarkRoast继承自Beverage