拒绝知识盲点 测试相关的方方面面都在这儿

很多时候,由于迭代周期有限,开发任务多、时间紧,导致很多产品基本没有单元测试,从而也导致很多同学这块都是盲区。

其实我对测试接触也非常少,所以深度方面是很难做到了,大家作为扫盲文对待即可,当然我相信只要能够初步的了解相关文章,大家都有再以此深入学习下去的能力。

此文主要是因为唯鹿之前给我投递了几篇单元测试的文章,我去他博客目录看了下,可以说其实是一个系列的文章,单篇很难进行推送。故以此为起点,给大家做一个一整套的测试相关的文章整理。

文章带引用的部分,为从最近一篇文章中的引用内容。资源可能会已经过期,想注意鉴别。

以后该方面文章都叫必知必会系列了,历史该系列:

1

压力测试

这个应该是最常见的,往往不做单元测试,但是压力测试还是会做的。多数都是使用Monkey,不是很复杂,推荐一篇不错的文章:

Android Monkey 压力测试

http://dwz.cn/7CubU8

当然了,万事开头难,然后中艰难,最后结果难。开头很关键,这里还推荐个免费的视频教程:

http://www.imooc.com/learn/729

到这儿应该能搞定压力测试了。

2

JUnit框架的使用

现在终于到单元测试了,首先推荐一篇:

Android单元测试 - 如何开始?

https://www.jianshu.com/p/bc99678b1d6e

作者推荐最好从Junit、Mockito开始入门。

对于Junit的好文:

介绍了基础用法、参数化测试、assertThat用法、Rule用法等。

附带几篇:

Android单元测试之JUnit框架

https://maxwell-nc.github.io/android/junitTest.html

Android单元测试(三):JUnit单元测试框架的使用

http://chriszou.com/2016/04/18/android-unit-testing-junit.html

3

Mockito框架的使用

再继续学习之前,不妨先看下:

Android单元测试 - 几个重要问题

https://www.jianshu.com/p/f5d197a4d83a

了解下各种依赖问题如何面对。

然后开始Mockito:

作者的话写的很好:在实际的单元测试中,我们测试的类之间会有或多或少的耦合,导致我们无法顺利的进行测试,这时我们就可以使用Mockito,Mockito库能够Mock(我喜欢理解为模拟)对象,替换我们原先依赖的真实对象,这样我们就可以避免外部的影响,只测试本类,得到更准确的结果。

Android单元测试之Mockito框架

https://maxwell-nc.github.io/android/mockitoTest.html

以及Mockito框架中文文档(早期Simple组织翻译):

https://github.com/hehonghui/mockito-doc-zh

4

PowerMock框架的使用

PowerMock ,它拓展了Mockito框架,从而支持了mock static方法、private方法、final方法与类等等。

5

Robolectric框架的使用

开发工具提供了我们开发和编译的JVM环境,要运行app需要Dalvik或ART环境。而单元测试的是一个运行过程,我们没有相应的环境,所以运行依赖android.jar包的方法时将会抛出RuntimeException("stub!")。那么怎么办呢?使用Robolectric可以解决此类问题,它通过实现一套JVM能运行的Android代码,从而做到脱离Android运行环境进行测试。

6

JaCoCo生成单元测试及覆盖率报告

本文介绍了如何利用JaCoCo生成单元测试及覆盖率报告并在Jenkins显示测试报告结果。

Android单元测试(三)

https://www.jianshu.com/p/ce6697f8434e

Android增量代码测试覆盖率工具-美团

https://tech.meituan.com/android-jacoco-practace.html

7

Espresso 谷歌官方提供用于UI交互测试

Espresso最强大的功能就是UI自动化测试,这是其他单元测试框架达不到的,我们可以让Espresso处理它拿手的UI界面测试,而网络请求等业务处理,我们可以交给其他测试框架去处理,比如Mockito(后文再讲)。

官方文档:

https://developer.android.com/training/testing/ui-testing/espresso-testing.html

8

一些实战

RxJava,MVP,Dagger这些库我们用的越来越多,那么如何更加方便的对这些进行测试呢?

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180320G07AUM00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券