[转]Android测试相关
很多时候,由于迭代周期有限,开发任务多、时间紧,导致很多产品基本没有单元测试,从而也导致很多同学这块都是盲区。
其实我对测试接触也非常少,所以深度方面是很难做到了,大家作为扫盲文对待即可,当然我相信只要能够初步的了解相关文章,大家都有再以此深入学习下去的能力。
此文主要是因为唯鹿之前给我投递了几篇单元测试的文章,我去他博客目录看了下,可以说其实是一个系列的文章,单篇很难进行推送。故以此为起点,给大家做一个一整套的测试相关的文章整理。
文章带引用的部分,为从最近一篇文章中的引用内容。资源可能会已经过期,想注意鉴别。
以后该方面文章都叫必知必会系列了,历史该系列:
1. 1压力测试
这个应该是最常见的,往往不做单元测试,但是压力测试还是会做的。多数都是使用Monkey,不是很复杂,推荐一篇不错的文章:
- Android Monkey 压力测试http://dwz.cn/7CubU8
当然了,万事开头难,然后中艰难,最后结果难。开头很关键,这里还推荐个免费的视频教程:
http://www.imooc.com/learn/729
到这儿应该能搞定压力测试了。
2. 2JUnit框架的使用
现在终于到单元测试了,首先推荐一篇:
- Android单元测试 – 如何开始?https://www.jianshu.com/p/bc99678b1d6e
作者推荐最好从Junit、Mockito开始入门。
对于Junit的好文:
- Android单元测试(一):JUnit框架的使用http://blog.csdn.net/qq_17766199/article/details/78243176
介绍了基础用法、参数化测试、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. 3Mockito框架的使用
再继续学习之前,不妨先看下:
- Android单元测试 – 几个重要问题https://www.jianshu.com/p/f5d197a4d83a
了解下各种依赖问题如何面对。
然后开始Mockito:
- Android单元测试(二):Mockito框架的使用http://blog.csdn.net/qq_17766199/article/details/78450007
作者的话写的很好:在实际的单元测试中,我们测试的类之间会有或多或少的耦合,导致我们无法顺利的进行测试,这时我们就可以使用Mockito,Mockito库能够Mock(我喜欢理解为模拟)对象,替换我们原先依赖的真实对象,这样我们就可以避免外部的影响,只测试本类,得到更准确的结果。
- Android单元测试之Mockito框架https://maxwell-nc.github.io/android/mockitoTest.html
- Android 单元测试 Mockito使用详解http://blog.csdn.net/mq2553299/article/details/77014651
- Android单元测试(四):Mock以及Mockito的使用http://chriszou.com/2016/04/29/android-unit-testing-mockito.html
以及Mockito框架中文文档(早期Simple组织翻译):
https://github.com/hehonghui/mockito-doc-zh
4. 4PowerMock框架的使用
PowerMock ,它拓展了Mockito框架,从而支持了mock static方法、private方法、final方法与类等等。
- Android单元测试(三):PowerMock框架的使用http://blog.csdn.net/qq_17766199/article/details/78573390
- Android单元测试之PowerMockitohttps://www.jianshu.com/p/6631bd826677
- Android最佳Mock单元测试方案:Junit + Mockito + Powermockhttp://www.snowdream.tech/2016/08/03/android-mock-test/
- Android单元测试(一)https://www.jianshu.com/p/0a8bbfe6cba2
5. 5Robolectric框架的使用
开发工具提供了我们开发和编译的JVM环境,要运行app需要Dalvik或ART环境。而单元测试的是一个运行过程,我们没有相应的环境,所以运行依赖android.jar包的方法时将会抛出RuntimeException(“stub!”)。那么怎么办呢?使用Robolectric可以解决此类问题,它通过实现一套JVM能运行的Android代码,从而做到脱离Android运行环境进行测试。
- Android单元测试(四):Robolectric框架的使用http://blog.csdn.net/qq_17766199/article/details/78710177
- Android 单元测试–Robolectrichttps://www.diycode.cc/topics/377
- Android单元测试(七):Robolectric,在JVM上调用安卓的类http://chriszou.com/2016/06/05/robolectric-android-on-jvm.html
- Android单元测试之Robolectric框架https://maxwell-nc.github.io/android/robolectricTest.html
- Android单元测试研究与实践-美团https://tech.meituan.com/Android_unit_test.html
6. 6JaCoCo生成单元测试及覆盖率报告
本文介绍了如何利用JaCoCo生成单元测试及覆盖率报告并在Jenkins显示测试报告结果。
- Android单元测试(三)https://www.jianshu.com/p/ce6697f8434e
- Android增量代码测试覆盖率工具-美团https://tech.meituan.com/android-jacoco-practace.html
7. 7Espresso 谷歌官方提供用于UI交互测试
Espresso最强大的功能就是UI自动化测试,这是其他单元测试框架达不到的,我们可以让Espresso处理它拿手的UI界面测试,而网络请求等业务处理,我们可以交给其他测试框架去处理,比如Mockito(后文再讲)。
- Espresso入门http://shiyuanjie.cn/2016/11/23/Espresso%E5%85%A5%E9%97%A8/
- Android使用Espresso进行UI自动化测试https://juejin.im/post/5a30e0996fb9a045211eb341
- Android自动化测试–Espresso框架使用http://blog.csdn.net/qq_17766199/article/details/79183901
- Android 自动化测试 Espresso篇:简介&基础使用http://blog.csdn.net/mq2553299/article/details/74067002
- Android 自动化测试 Espresso篇:异步代码测试http://blog.csdn.net/mq2553299/article/details/74490718
官方文档:
https://developer.android.com/training/testing/ui-testing/espresso-testing.html
8. 8一些实战
RxJava,MVP,Dagger这些库我们用的越来越多,那么如何更加方便的对这些进行测试呢?
- Android单元测试(五):网络接口测试http://blog.csdn.net/qq_17766199/article/details/78881992
- Android单元测试(六):RxJava测试http://blog.csdn.net/qq_17766199/article/details/78989664
- Android单元测试(七):MVP与单元测试http://blog.csdn.net/qq_17766199/article/details/79183901
- Android单元测试(八):Dagger与单元测试http://blog.csdn.net/qq_17766199/article/details/79277483
[转]Android测试相关