Android单元测试学习(一)
什么是单元测试
首先总结一下什么是单元测试,单元测试中的单元在Android或Java中可以理解为某个类中的某一个方法,因此单元测试就是针对Android或Java中某个类中的某一个方法中的逻辑代码进行验证即测试该方法是不是可以正常工作。
还有一点就是要区分单元测试与集成测试(功能测试、UI测试),单元测试是针对单元即方法的测试,被测单元粒度要小并且具备独立性,而集成测试是测试多个单元(方法)组合成的功能模块。
为什么需要进行单元测试
- 单元测试的测试相对于集成测试的测试成本较低
- 提高开发效率
- 提升项目工程代码质量
- 快速定位Bug
如何进行单元测试
在Android Studio中默认情况下不需要进行配置,已经支持Instrumentation与纯JUnit,分别在androidTest与test中创建测试类,编写测试代码
以下对JUnit单元测试进行简单介绍
public class Calculater {
public int add(int a, int b) {
return a + b;
}
}
AssertEquals
单元测试用例:
public class CalculaterTest {
Calculater calculater = new Calculater();
@org.junit.Test
public void testAdd() {
int a = 1;
int b = 2;
int result = calculater.add(a, b);
Assert.assertEquals(result, 3); // 验证result==3,如果不正确,测试不通过
}
}
以上是一个要测试的类Calculater和测试用例CalculaterTest。在Intellij或Android Studio对类右键->run CalculaterTest,用例中所有被@org.junit.Test注解的方法,就会被执行。
测试通过。
如果代码改成Assert.assertEquals(result, 4);,测试会失败。
verify的作用,是验证函数是否被调用(以及调用了多少次)。
public class CalculaterTest {
@org.junit.Test
public void testAdd2() {
calculater = mock(Calculater.class);
calculater.add(1, 2);
verify(calculater).add(1, 2); // 验证calculater.add(a, b)是否被调用过,且a==1 && b==2
// 测试通过
}
}
Android单元测试学习(一)的更多相关文章
- Android 单元测试学习计划
网上查了一下Android单元测试相关的知识点,总结了一个学习步骤: 1. 什么是单元测试2. 单元测试正反面: 2.1. 重要性 2.2. 缺陷 2.3. 策略3. 单元测试的基础知识: 3.1. ...
- Android之单元测试学习
1.单元测试概念 单元测试(又称为模块测试),检验程序模块(软件设计的最小单位)正确性的测试工作,常常是程序员写的一段代码.对于面向对象编程,最小单元就是方法,包括基类(超类).抽象类.或者派生类(子 ...
- 阿里知识储备之二——junit学习以及android单元测试
一,junit框架 http://blog.csdn.net/afeilxc/article/details/6218908 详细见这篇博客 juit目前已经可以和maven项目进行集成和测试,而且貌 ...
- Android单元测试实践
为什么要写单元测试 首先要介绍为什么蘑菇街支付金融这边会采用单元测试的实践.说起来比较巧,刚开始的时候,只是我一个人会写单元测试.后来老板们知道了,觉得这是件 很有价值的事情,于是就叫我负责我们组的单 ...
- Android自动化学习笔记之MonkeyRunner:官方介绍和简单实例
---------------------------------------------------------------------------------------------------- ...
- Android Testing学习02 HelloTesting 项目建立与执行
Android Testing学习02 HelloTesting 项目建立与执行 Android测试,分为待测试的项目和测试项目,这两个项目会生成两个独立的apk,但是内部,它们会共享同一个进程. 下 ...
- Android Testing学习01 介绍 测试测什么 测试的类型
Android Testing学习01 介绍 测试测什么 测试的类型 Android 测试 测什么 1.Activity的生命周期事件 应该测试Activity的生命周期事件处理. 如果你的Activ ...
- android单元测试 activity跳转 以及 input 输入后 测试
Android junit实现多个Activity跳转测试 分类: Android Junit测试2011-11-14 16:49 1601人阅读 评论(2) 收藏 举报 androidjunitla ...
- Android开发学习之路-RecyclerView滑动删除和拖动排序
Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...
随机推荐
- centos打开matlab的正确姿势
进入usr/local/MATLAB/R2015b/bin ./matlab
- 面向对象编程其实很简单--python面向对象(初级篇)
出处:http://www.cnblogs.com/wupeiqi/ 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函 ...
- CHECK约束表达式
1.性别:只能填写'男'和'女' (字段名='男'or 字段名='女') 注意:单引号里的值可以为其他任何字 2.规定密码长度不能小于6位数 (len([字段名])>(5)) 3.例:成绩在 ...
- Mondrian辅助组件----Schema WorkBench(架构平台简介)
Schema WorkBech 是Pentaho套件的另一个组件,是mondrian中schema文件生成工具.通过Schema WorkBench我们可以快速生成一个schema文件,不再需要手写. ...
- 剑指Offer 20. 包含min函数的栈 (栈)
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 题目地址 https://www.nowcoder.com/practice/4c77 ...
- 定义action的允许访问方式
publicfunction behaviors() { return[ 'verbs'=>[ 'class'=>VerbFilter::className(), 'actions'=&g ...
- SQL-索引-012
什么是索引?
- AJAX 请求后使用 JS 打开新标签页被阻止的解决方法
需求:发起一个 AJAX 请求,根据请求结果来打开一个新页面. 问题:AJAX 请求后,使用 window.open() 方法来打开新页面会被浏览器阻止. 解决方法:在 AJAX 请求之前,就使用 c ...
- hsdfz -- 6.16 -- day1
恩这回不写游记了 按照老师要求记录今天的心里路程:这题似乎可做期望得分150->日部分分似乎不是很显然->a题似乎是结论题,大力猜一波结论->过不了样例,先看b题->b题动态树 ...
- PythonStudy——列表与字典推导式 List and dictionary derivation
# 快速生成列表或字典的语法糖,且能在生成过程中添加简单的逻辑 # 能被列表推导式推导的数据源必须在循环取值时可以得到一个值 ls = [v for v in range(1, 6)] print(l ...