单元测试是个技术活,它有自己的一套知识体系,要做好单元测试,的确是需要学习和不断的在实践中练习的。好消息是,这套知识体系的范围相对来说是有限的,因此,只要耐心的学习和练习一段时间,可以做好日常大多数的需求。然后国内这大环境和氛围,大家都清楚,大部分时候大家都在赶feature,赶上线,以至于单元测试这件事情,往往被忽略,甚至从来没考虑过,而这一点在移动开发上面则更加严重。这导致的结果是,网上很难找到比较系统的关于单元测试各个方面的文章。这让有些童鞋那怕有做单元测试的想法,却不知道从何下手,因此导致一个恶性循环。出于这点原因,我根据自己的一些经验和想法,写了一个系列的文章,至此为止写了7篇,然而经常发现有朋友对前面的一些概念不是很清楚,从网站或公众号找之前的一些文章又不是很方便,因此整理了这样一篇汇总性的文章,希望能让大家对此有个更整体化的了解,如果某一方面的东西不是很清楚,也能很快找到参考。
  以下文章是这个系列文章的总结。
  什么是单元测试:介绍了什么是单元测试,里面澄清了一个常见的误解,同时介绍了有返回值和没有返回值两种不同的函数——对于OO来说,应该叫“方法”,但是中文里面“方法”这个词太容易产生误解了,因此我这里用函数来代替,这是翻译尴尬的地方。所以很多时候我建议不如直接用英文单词本身,而不是非要硬生生翻译过来。
  为什么要做单元测试:对于什么要做单元测试的个人之见。
  JUnit单元测试框架的使用 :介绍了题目中说的内容,JUnit是基础的一个单元测试框架。
  Mock以及Mockito的使用 :mock自古以来是单元测试不可分割的一部分,这篇介绍了mock的概念和使用。
  依赖注入,将mock方便的用起来 :为了将mock更方便简洁优雅的用起来,我们需要用到依赖注入。这篇文章介绍了依赖注入的概念和使用。
  使用dagger2来做依赖注入,以及在单元测试中的应用 :上一篇文章讲了依赖注入,而Dagger2能让我们易如反掌的使用依赖注入的模式,代码的耦合度变得非常低。
  Robolectric,在JVM上调用安卓的类 :解决在JVM上做单元测试的时候,无法调用和测试安卓的类的问题。
  其它的一些文章:
  Android单元测试在蘑菇街支付金融部门的实践 :这个是在InfoQ的移动前线学习分享群里面作的一个分享,首发于”移动开发前线”公众号,也在InfoQ网站上发表过,讲了的单元测试在蘑菇街支付金融部门的实践。
  MDay上的分享-关于安卓单元测试的一切 :这是在MDay第五季作的一次分享,有 PPT 和视频,不过视频暂时还没有公开,如果公开了会第一时间更新过来。
  安卓单元测试是不是只有这些东西?当然不是,只不过,主要的概念和框架都在这了。剩下的相对来说更多是一些具体的技巧、解决某个具体问题的方法等等。