美文网首页Android性能优化Android 单元测试 Junit4
关于安卓单元测试,你需要知道的一切

关于安卓单元测试,你需要知道的一切

作者: 邹小创 | 来源:发表于2016-07-11 21:54 被阅读1992次

    单元测试是个技术活,它有自己的一套知识体系,要做好单元测试,的确是需要学习和不断的在实践中练习的。好消息是,这套知识体系的范围相对来说是有限的,因此,只要耐心的学习和练习一段时间,就可以做好日常大多数的需求。然后国内这大环境和氛围,大家都清楚,大部分时候大家都在赶feature,赶上线,以至于单元测试这件事情,往往被忽略,甚至从来没考虑过,而这一点在移动开发上面则更加严重。这导致的结果就是,网上很难找到比较系统的关于单元测试各个方面的文章。这就让有些童鞋那怕有做单元测试的想法,却不知道从何下手,因此导致一个恶性循环。
    出于这点原因,我根据自己的一些经验和想法,写了一个系列的文章,至此为止写了8篇,然而经常发现有朋友对前面的一些概念不是很清楚,从网站找之前的一些文章又不是很方便,因此整理了这样一篇汇总性的文章,希望能让大家对此有个更整体化的了解,如果某一方面的东西不是很清楚,也能很快找到参考。

    以下文章是这个系列文章的总结。

    1. 什么是单元测试:介绍了什么是单元测试,里面澄清了一个最常见的误解,同时介绍了有返回值和没有返回值两种不同的函数——对于OO来说,应该叫“方法”,但是中文里面“方法”这个词太容易产生误解了,因此我这里用函数来代替,这就是翻译尴尬的地方。所以很多时候我建议不如直接用英文单词本身,而不是非要硬生生翻译过来。
    2. 为什么要做单元测试:对于什么要做单元测试的个人之见。
    3. JUnit单元测试框架的使用:介绍了题目中说的内容,JUnit是最基础的一个单元测试框架。
    4. Mock以及Mockito的使用:mock自古以来就是单元测试不可分割的一部分,这篇介绍了mock的概念和使用。
    5. 依赖注入,将mock方便的用起来:为了将mock更方便简洁优雅的用起来,我们需要用到依赖注入。这篇文章介绍了依赖注入的概念和使用。
    6. 使用dagger2来做依赖注入,以及在单元测试中的应用:上一篇文章讲了依赖注入,而Dagger2能让我们易如反掌的使用依赖注入的模式,代码的耦合度变得非常低。
    7. Robolectric,在JVM上调用安卓的类:解决在JVM上做单元测试的时候,无法调用和测试安卓的类的问题。
    8. 安卓单元测试(八):Junit Rule的使用:解决在JVM上做单元测试的时候,无法调用和测试安卓的类的问题。
    9. 安卓单元测试(九):使用Mockito Annotation快速创建Mock: 使用Mockito Annotation提高创建Mocks的效率
    10. 安卓单元测试(十):DaggerMock, 让Dagger2与单元测试的结合易如反掌 如果你的项目使用Dagger2,那么DaggerMock绝对是单元测试的神器
    11. 安卓单元测试(十一):异步代码怎么测试 这是被问的最多的一个问题之一,介绍怎么样给异步代码做单元测试

    其它的一些文章:

    Android单元测试在蘑菇街支付金融部门的实践:这个是在InfoQ的移动前线学习分享群里面作的一个分享,讲了的单元测试在蘑菇街支付金融部门的实践。

    安卓单元测试是不是只有这些东西?当然不是,只不过,主要的概念和框架都在这了。剩下的相对来说更多是一些具体的技巧、解决某个具体问题的方法等等。对于这些东西,以后也会有文章介绍,敬请关注。

    获取最新文章或想加入安卓单元测试交流群,请关注下方公众号

    相关文章

      网友评论

      • 3e6043b91737:刚好做一个大屏项目,不能像用手机一样调试,学习下看看有没有其它测试的方法。确实不错😊
      • coolfireApy:写的非常好,准备把我的项目添加单元测试的.项目使用flux+rxjava+dagger2
      • 陌路人_73a5:很棒,很系统
      • 北方南山:现在在写view层单元测试,被下面这四个东西绞晕了。 :smile:
        ### Robolectric
        ### Espresso
        ### ActivityInstrumentationTestCase2
        ### AndroidJUnitRunner (AndroidJUnit4)
        邹小创:@北方南山 前三者都是测试框架。
        用Robolectric写的单元测试是运行在JVM上面的,用Espresso 和 ActivityInstrumentationTestCase2 写的都是运行在手机上的。
        AndroidJUnitRunner和前三者不是一类东西,只是用来运行单元测试的一个类,类似于一个单元测试的触发器,具体是用在Espresso和ActivityInstrumentationTestCase2,Robolectric也有一个对应的触发器,叫RobolectricGradleTestRunner.
      • 北方南山:根据你的文章,如果能有一个mvp 的项目示例的单元测试就好了。
        北方南山:@AvatarQing 还是需要再多看看相关文章。
        北方南山:@AvatarQing 嗯,这里面的例子代码太简单了。
        carlos23:@北方南山 官方有MVP+单元测试例子,https://github.com/googlesamples/android-architecture

      本文标题:关于安卓单元测试,你需要知道的一切

      本文链接:https://www.haomeiwen.com/subject/bbujjttx.html