Android 测试Android经验分享Android Dev

[Android技术专题]每个开发者都应该懂一点单元测试

2016-08-27  本文已影响1886人  张明云

更多原创文章和优质资源请关注公众号:


open_dev

笔者在项目中实际有写过单元测试的代码,也用过一些单元测试的框架,但对单元测试的理解都很浅显,直到有一次在InfoQ编辑徐川主导的微信群里面看了蘑菇街小创同学的分享,加深了我对单元测试的兴趣和理解,他针对android平台的单元测试写了一个系列的文章,从什么是单元测试、单元测试的意义、各种方法怎样做单元测试、单元测试和集成测试的区别、各种测试框架和开源库在写单元测试时如何很好地被使用、以及如何mock、在PC上运行需要依赖android设备环境的测试等方面都做了非常详细的介绍,下文中的很多观念都是看了他的文章吸收得来的。

坦诚的讲,本人目前只是深刻认识到了单元测试对于实际项目开发的意义,但对于单元测试技术的研究,还是要向小创同学多多学习。文末的参考资料贴出了他写的一系列关于单元测试的文章,非常值得阅读,还有他创建了一个android单元测试交流群,用于针对android平台单元测试技术的交流,如果有兴趣,可以关注他的公众号,里面有介绍如何加群:

小创作

一、什么是单元测试?

为了测试某个类中的某一个方法能否正常工作,而写的测试代码。

单元的定义:代码中可度量的最小单元(函数/方法);

是否正常工作:不同的输入对应的输出是否与预期一致。

二、单元测试有必要吗?

1 对是否有必要写单元测试的疑惑

2 不写单元测试会存在的一些问题:

3 单元测试能够解决的问题

三、哪些可以做单元测试?

四、关于单元测试的一些概念

1 分类

按测试内容分:

按是否依赖设备分

2 测试框架

如果没有框架该如何做单元测试

测试框架能够提高测试效率

JUnit、Instrumentation test、Espresso、UI Automator、Robolectric、Appium、Robotium

3 覆盖率

4 JUnit框架中的常用方法

5 一个单元测试的流程

6 关于Mock

在写单元测试的过程中,我们可能会发现需要和系统内的某个模块或系统外某个实体交互,而这些模块或实体在您做单元测试的时候可能并不存在,比如您遇到了数据库、遇到了驱动程序等。这时开发人员就需要使用mock技术来完成单元测试。

mock就是创建一个类的虚假的对象,在测试环境中,用来替换掉真实的对象,以达到两个目的:

要使用mock技术,就需要使用mock框架,MockitoJmockit是android平台两个常用的mock框架,其中Mockito不能mock static method和final class、final method,但Jmockit可以。

7 依赖注入在单元测试中的使用

上文中提到的Mock技术就是创建一个类的虚假的对象,在测试环境中用来替换掉真实的对象,但如何在测试环境下,将某个类替换成mock的对象就需要使用到依赖注入了,他的基本理念是,某一个类(比如说DataActivity),用到的内部对象(比如说DataModel)的创建过程不在DataActivity内部去new,而是由外部去创建好DataModel的实例,然后通过某种方式set给DataActivity。这种模式应用是非常广泛的,尤其是在测试的时候。常见的依赖注入框架有:RoboguiceDaggerDagger2

在实际写单元测试的过程中,mock技术会经常用到,所有非常有必要熟悉其中一种依赖注入框架,关于依赖注入的详细解释可以参见公共技术点之依赖注入

五、单元测试集成到Jenkins

六、说明

七、参考资料

上一篇 下一篇

猜你喜欢

热点阅读