【腾讯TMQ】【测试左移专栏】用Powermock和Mockito来做安卓单元测试

本文介绍了如何在Android环境中进行单元测试,探讨了不同类型的单元测试框架,如Instrumentation、Junit/Mockito等。文章详细讲解了单元测试的基本概念,Google官方推荐的MVP架构以及各个层的测试策略。此外,还阐述了单元测试环境的准备工作,包括新建工程、配置依赖和增加Jacoco覆盖率。最后,作者分享了编写AndroidTest和test目录下单元测试用例的经验,强调了选择测试框架的重要性,如Robolectric和Espresso,并推荐了使用Junit、Mockito和Powermock进行单元测试。
摘要由CSDN通过智能技术生成

作者:ZeusL

团队:腾讯移动品质中心TMQ

一、单元测试及Android单元测试简介

惯例,先简单介绍下理论知识,懂得的可以跳过。

1、单元测试定义和特性

单测定义:

在计算机编程中,单元测试(Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。
程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。

单测特性:

截取下《单元测试的艺术》一书中的优秀的单元测试特性,牢记!

2、Android单元测试

顾名思义,是在Android系统下进行的单元测试。

业界上已经有很多工具可以支持做Android系统下的单元测试,主要分为两大类:

(1)Instrumentation

通过Android系统的Instrumentation测试框架,我们可以编写测试代码,并且打包成APK,运行在Android手机上。

优点: 逼真;

缺点: 很慢;

代表框架:Junit,Espresso。

(2)Junit / Mock

通过Junit,以及第三方测试框架,我们可以编写测试代码,生成class文件,直接运行在JVM虚拟机中。

优点: 很快,使用简单,方便;

缺点: 不够逼真,比如有些硬件相关的问题,无法通过这些测试出来;

代表框架: Junit,Robolectric, Mockito, Powermock。

Robolectric:一个单元测试框架,可以清除Android SDK(通过shadow技术),以便您可以测试驱动Android应用程序的开发,测试JVM内部运行,用例执行速度很快。

其官网地址:http://Robolectric.org/

Espresso:一种简洁,美观,可靠的Android UI测试框架。

其API地址:https://developer.Android.com/reference/Android/support/test/Espresso/Espresso.html

Mockito:一个针对 Java 的单元测试模拟框架,它与 EasyMock 和 jMock 很相似,都是为了简化单元测试过程中测试上下文 ( 或者称之为测试驱动函数以及桩函数 ) 的搭建而开发的工具。

其中文开发文档:http://www.devtf.cn/?p=1315

Powermock:是在 EasyMock 以及 Mockito 基础上的扩展,通过定制类加载器等技术,实现了之前提到的所有Mockito不能模拟的功能,比如静态函数、构造函数、私有函数、Final 函数以及系统函数的模拟。

二、Google官方MVP架构

在熟悉单元测试框架前,首先需要学习了下Google官方推荐Android的MVP项目架构,好的框架单元测试也比较好开展。

其推荐的项目中MVP各层所使用的单元测试框架如下图所示:

其MVP测试架构图总结如下:

项目代码有兴趣学习的同学可以去自行下载去学习,学习这种优秀代码是最快的方式。

View层:

职责:MVP模式下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值