UI测试在Android平台上一直都是一个令人头痛的事情, 由于大家平时用的很少, 加之很多文档的缺失, 如果很多东西从头摸索,势必踩坑无数.

自Android24正式淘汰掉了InstrumentationTestCase(位于android.test包), 推出Espresso(位于android.support.test包), Google一直致力于降低UI测试的门槛.

了解测试金字塔的同学可能知道,UI测试属于功能测试(Functional Test), 或者按照其他的划分也属于集成测试(Integration Test), Google推出了UIAutomatorEspresso来分别处理跨App间的测试(黑盒测试)以及App内的测试(白盒测试).

测试步骤类似,分为:

  • 查找元素
  • 触发行为
  • 检测结果

本文分为三部分, 第一部分简单介绍如何使用Espresso, 第二部分分析如何处理诸如异步, 依赖注入, 程序结构对UI测试的影响以及提供解决办法, 第三部分提供源码以及一些Reference的地址.

阅读全文

如何从RxJava升级到RxJava2

发布在 Android

RxJava2已经推出有一年半的时间,由于之前RxJava已经在现有项目中广泛使用,而RxJava2在除了很多命名外并没有太多革新,所以相信有很多人跟我一样都还没有升级.

随着老版本渐渐的失去维护,更重要的是有一定时间允许我来做这个迁移,其实弃老从新一直都是程序员的喜好.

虽然官方提供了文档详尽的介绍了区别,但是文章之长,可能很多人读不下去,却有想快速的迁移过来,我将除了命名改变之外有用的地方总结成了几点,供大家参考.

阅读全文

紧接上期

账号系统建立 Account Authenticator

如果只需要借助系统更新服务(SyncAdapter)来做定期维护, 那么通过前两部分的介绍, 已经可以达到所预期的目标了.

本期话题将会解决

  • 添加账号
  • 获得授权

这些服务全部都是可以跨进程的操作, 完成了这些操作, 我们就可以完成像QQ 新浪微博 一样的功能, 账号系统可以为第三方应用授权.

阅读全文

紧接上一部分

更新系统的建立

更新系统即是所说的SyncAdapter, 实现了这个系统服务, 就可以利用系统的定时器对程序数据ContentProvider进行更新, 也可以在系统设置->账号里面控制开启或者关闭(如果SyncAdapter的配置文件允许的话)

完成这些服务的布置大概有三步

  • 创建SyncService并提供SyncAdapter的IBinder接口以便让系统调用
  • 声明Sync服务, 并制定SyncAdapter的配置文件
  • 生成账户启动Sync
阅读全文

账号与同步

Android从API Level5就有了自己的同步服务, 但很少有程序使用到, 一来大多数程序不需要所谓的同步,二来很多程序自己实现了后台的同步更新. 随着Android程序开发的逐渐程序, 越来越的的程序使用到了系统提供的服务来完成账号认证同步更新, 我们可以打开系统设置–>账号进行查看, 就能看到很多应用都这么做了. 这样做有两个好处, 一来系统服务做更新同步(SyncAdapter)唤醒更加绿色环保, 二来实现了账号认证(Authenticator)还可以为其他应用提供第三方认证服务, 如大家常见的使用QQ或者微博账号登录, 由于你手机上安装的QQ与微博实现了该接口, 便可以通过开发者账号获得授权Token来做第三方认证.

本期博客分三部分来讲, 通过一个小应用(Part Three提供源码)来概述所有相关内容, 大体章节如下

  • 数据模型建立与加载 (ContentProvider LoaderManager)

  • 更新系统建立 (SyncAdapter)

  • 账号系统建立 (Account Authenticator)

下面先来讲讲如何轻松本地数据库并完成数据到界面的加载

阅读全文

依赖注入(DI)
有些人说Android使用依赖注入是因为很多J2EE的人带来的异域思想, 满天飞的注解让人莫不找头脑, 使简单的行为变得复杂, 表面简化, 实则复杂.

但是在使用其一段时间后, 确实还是挺不错的. 正如其思想之精髓, 让你只关注结果,而忽略制作过程, 呵呵, 跟周星驰他老母恰巧相反.

那么下面就讲讲Android开发中常常的用的一些DI框架, 来简化亲们的开发流程吧.

阅读全文

Android Activity所涉及的四种Launch Mode与其重要的几个属性,如taskAffinity,allowTaskReparenting等,包括Intent内的各种Flag的功效,一直是为广大开发者所苦恼,网上文章众说纷纭,开发文档又及其模糊且与实际情况有一定偏差,那么今天我们就来真正的揭秘,还原事实的真相。
阅读全文

Robolectric in Android Studio

发布在 Android

Robolectric

Robolectric is a unit test framework that de-fangs the Android SDK jar so you can test-drive the development of your Android app. Tests run inside the JVM on your workstation in seconds. With Robolectric you can write tests like this:

1
2
3
4
5
6
7
8
9
10
11
12
// Test class for MyActivity @RunWith(RobolectricTestRunner.class)
public class MyActivityTest {

@Test public void clickingButton_shouldChangeResultsViewText()
throws Exception {
Activity activity = Robolectric.buildActivity(MyActivity.class).create().get();
Button pressMeButton = (Button) activity.findViewById(R.id.press_me_button);
TextView results = (TextView) activity.findViewById(R.id.results_text_view);

pressMeButton.performClick();
String resultsText = results.getText().toString();
assertThat(resultsText, equalTo("Testing Android Rocks!")); } }

Robolectric makes this possible by rewriting Android SDK classes as they’re being loaded and making it possible for them to run on a regular JVM.


阅读全文
  • 第 1 页 共 1 页

Prince Chen

Xidian B/M EE
热爱生活, 关爱老婆
友情链接 圣骑士


Worker


Xi'an