Android单元测试之一:基本概念

简单介绍

  单元测试是应用程序测试策略中的基本测试,通过对代码进行单元测试,一方面可以轻松地验证单个单元的逻辑是否正确,另一方面在每次构建之后运行单元测试,可以快读捕获和修复因代码更改(重构、优化等)带来的回归问题。

为什么要进行单元测试?

  • 提高稳定性,能够明确地了解是否正确的完成开发;
  • 快速反馈 bug ,跑一遍单元测试用例,定位 bug ;
  • 在开发周期中尽早通过单元测试检查 bug ,最小化技术债,越往后可能修复 bug 的代价会越大,严重的情况下会影响项目进度;
  • 为代码重构提供安全保障,在优化代码时不用担心回归问题,在重构后跑一遍测试用例,没通过说明重构可能是有问题的,更加易于维护。

单元测试要测什么

  • 列出想要测试覆盖的正常、异常情况,进行测试验证;
  • 性能测试,例如某个算法的耗时等等。

单元测试的分类

  1. 本地测试( Local tests):只在本地机器 JVM 上运行,以最小化执行时间,这种单元测试不依赖于 Android 框架,或者即使有依赖,也很方便使用模拟框架来模拟依赖,以达到隔离 Android 依赖的目的,模拟框架如 google 推荐的 Mockito;
  2. 仪器化测试(Instrumented tests):在真机或模拟器上运行的单元测试,由于需要跑到设备上,比较慢,这些测试可以访问仪器(Android 系统)信息,比如被测应用程序的上下文,一般地,依赖不太方便通过模拟框架模拟时崔勇这种方式。

JUnit 注解

  了解一些 Jnit 注解,方便后面的测试说明。

Annotation 描述
@Test publish void method 定义所在方法为单元测试方法
@Test(expected=Exception.class) public void method() 测试方法若没有抛出 Annotation 中的 Exception 类型(子类型也可以)-> 失败
@Test(timeout=100) public void method() 性能测试,如果方法耗时超过 100 毫秒 -> 失败
@Before public void method() 这个方法在每个测试之前执行,用于准备测试环境(如:初始化类,读输入流等),在一个测试类中,每个 @Test 方法的执行都会触发一次调用。
@After publish void method() 这个方法在每个测试之后执行,用于清理测试环境数据,在一个测试类中,每个 @Test 方法的执行都会触发一次调用。
@BeforeClass public static void method() 这个方法在所有测试开始之前执行一次,用于做一些耗时的初始化工作(如,连接数据库),方法必须是 static 。
@AfterClass public static void method() 这个方法在所有测试结束之后执行一次,用于清理数据(如:断开数据连接),方法必须是 static 。
@Ignore或者@Ignore(“太耗时”) public void method 忽略当前测试方法,一般用于测试方法还没准备好,或者太耗时之类的。
@FixMethodOrder(MethodAorters.NAME_ASCENDING) public class TestClass{} 使得该测试类中的所有测试方法都按照方法名的字母顺序执行,分别指定 3 个值,DEFAULT、JVM、NAME_ASCENDING。

参考文章

https://www.jianshu.com/p/aa51a3e007e2

Android单元测试之一:基本概念的更多相关文章

  1. Android单元测试实践

    为什么要写单元测试 首先要介绍为什么蘑菇街支付金融这边会采用单元测试的实践.说起来比较巧,刚开始的时候,只是我一个人会写单元测试.后来老板们知道了,觉得这是件 很有价值的事情,于是就叫我负责我们组的单 ...

  2. Android单元测试

    安卓单元测试总结文章,目测主要会cover以下的主题: 什么是单元测试 为什么要做单元测试 JUnit Mockito Robolectric Dagger2 一个具体的app例子实践 神秘的bonu ...

  3. Android单元测试: 首先,从是什么开始

    Android单元测试: 首先,从是什么开始 http://chriszou.com/2016/04/13/android-unit-testing-start-from-what.html 这是一系 ...

  4. Android随笔之——Android单元测试

    在实际开发中,开发android软件的过程需要不断地进行测试.所以掌握Android的单元测试是极其重要的.您应该把单元测试作为Android应用开发周期的一部分,精心编写的测试可以在开发早起帮你发现 ...

  5. Android单元测试之四:仪器化测试

    Android单元测试之四:仪器化测试 仪器化测试 在某些情况下,虽然可以通过模拟的手段来隔离 Android 依赖,但代价很大,这种情况下可以考虑仪器化的单元测试,有助于减少编写和维护模拟代码所需的 ...

  6. Android单元测试之三:使用模拟框架模拟依赖

    Android单元测试之三:使用模拟框架模拟依赖 基本描述 如果是一些工具类方法的测试,如计算两数之和的方法,本地 JVM 虚拟机就能提供足够的运行环境,但如果要测试的单元依赖了 Android 框架 ...

  7. android单元测试 activity跳转 以及 input 输入后 测试

    Android junit实现多个Activity跳转测试 分类: Android Junit测试2011-11-14 16:49 1601人阅读 评论(2) 收藏 举报 androidjunitla ...

  8. Android 单元测试学习计划

    网上查了一下Android单元测试相关的知识点,总结了一个学习步骤: 1. 什么是单元测试2. 单元测试正反面: 2.1. 重要性 2.2. 缺陷 2.3. 策略3. 单元测试的基础知识: 3.1. ...

  9. 阿里知识储备之二——junit学习以及android单元测试

    一,junit框架 http://blog.csdn.net/afeilxc/article/details/6218908 详细见这篇博客 juit目前已经可以和maven项目进行集成和测试,而且貌 ...

随机推荐

  1. 链表详解(C语言)

    链表是一种常见的基础数据结构,结构体指针在这里得到了充分的利用. 链表可以动态的进行存储分配,也就是说,链表是一个功能极为强大的数组,他可以在节点中定义多种数据类型,还可以根据需要随意增添,删除,插入 ...

  2. JavaFX 记录刚刚接触JavaFX遇到的问题

    操作系统:Windows 10 x64 工具1:Eclipse Java EE IDE for Web Developers. Version: Photon Release (4.8.0) JDK: ...

  3. Ubuntu18.04,安装Redis配置远程连接访问和简单使用Redis

    前言 Redis是常用基于内存的Key-Value数据库,比Memcache更先进,支持多种数据结构,高效,快速.用Redis可以很轻松解决高并发的数据访问问题:作为实时监控信号处理也非常不错. 环境 ...

  4. JSON字符串自动转换

    package com.zkn.newlearn.json; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObj ...

  5. 使用X509Certificate2类操作证书文件

    public class CertHelper { string pfxPath = @"E:\开发辅助项目\cert\taisuyuanqing.pfx"; string cer ...

  6. vue 手机端样式统一配置

  7. nltk 词性解析

    转载链接: https://blog.csdn.net/pengjian444/article/details/81143983

  8. vue-cli3.0使用及配置

    1.先全局安装vue-cli3.0 检测安装: vue -V 2.创建项目(这个就跟react创建脚手架项目比较像了)   这里如果你是第一次用3.0版本的话,是没有前两个的,而只有最后两个,这里是 ...

  9. Bphero-UWB 基站0 和 电脑串口数据格式定义

    基站0 通过串口将系统中测得的距离信息发送到电脑,电脑定位软件通过三边定位算法计算出TAG的坐标,基站0 和 定位软件之间的数据格式定义如下(对官方数据结构进行了简化) 更多UWB定位信息请参阅论坛b ...

  10. 极速创建 IOS APP !涛舅舅苹果 IOS APP自助生成系统!不用证书、不用越狱、永久可用

    不用签名将网页封装成苹果APP,无需苹果企业签名,IPA签名,ios签名,免越狱安装 (本方法只支持网站封装app,原生的用不了,详细请咨询客服) 近期很多朋友问我把网站变成app的方法,原因很多种, ...