Android单元测试之google官例CalculatorTest
执行测试用例类CalculatorTest
设置genymotion可见:
Android Studio界面中,依次单击菜单项 View >Toolbar。即可见改工具按钮。
启动genymotion模拟器Google nexus5 :
Android Studio界面中,工具栏中单击粉色GenymotionDevice Manager工具图标按钮。
在弹出的Genymotion Device Manager窗口中,选中Google nexus5 ,单击【Start】。

关闭Genymotion Device Manager窗口。
执行测试用例CalculatorTest
弹出Select Deployment Target窗口,选中Genymotion模拟器,单击【OK】。
6条测试用例均执行成功。

1,单元测试:测试用例设计
如下是Calculator类,包含加、减、除、乘4个方法。

如下是CalculatorTest类,它是Calculator类的单元测试类。
设计了6个测试用例方法:
addTwoNumbers()测试用例实现调用Calculator类的add()加法方法;
subTwoNumbers()测试用例实现调用Calculator类的sub()减法方法;
subWorksWithNegativeResult()测试用例实现调用Calculator类的sub()减法方法;
divTwoNumbers()测试用例实现调用Calculator类的div()除法方法;
divDivideByZeroThrows()测试用例实现调用Calculator类的div()除法方法;
mulTwoNumbers()测试用例实现调用Calculator类的div()除法方法。

2,单元测试:常用注解
android junit4单元测试用例类跟普通的java代码编写过程最大的区别之一就是注解。
以下是junit4中的常用注解:
其他注解详见junit4官网:https://junit.org/junit4/
在测试类中这些常用注解的执行顺序是什么呢?
通过AnnotationSequenceTest测试类来验证。

packagecom.example.android.testing.androidjunitrunnersample;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4.class)
@SmallTest
public class AnnotationSequenceTest {
@BeforeClass
public static void init(){
System.out.println("annotation @BeforeClass");
}
@Before
public void setUp(){
System.out.println("annotation @Before");
}
@Test
public void test001(){
System.out.println("annotation @Test 1");
}
@Test
public void test002(){
System.out.println("annotation @Test 2");
}
@Ignore
public void test003(){
System.out.println("annotation@Ignore");
}
@After
public void tearDown(){
System.out.println("annotation @After");
}
@AfterClass
public static void end(){
System.out.println("annotation @AfterClass");
}
}
测试用例执行结果如下所示:

可见:
(1)一个JUnit4的单元测试用例执行顺序为:
@BeforeClass -> @Before -> @Test -> @After ->@AfterClass;
(2)每一个测试方法的调用顺序为:
@Before -> @Test -> @After;
(3)@BeforeClass和@AfterClass仅执行一次
测试java方法的验证点:
(1) 返回值
(2) 属性和状态的改变
(3) 操作行为
(4) 异常抛出
3,单元测试:异常检查
方法一:Junitannotation方式

@Test(expected = IllegalArgumentException.class)
public void divDivideByZeroThrows() {
System.out.println("divDivideByZeroThrows***********************************");
mCalculator.div(32d,0d);
System.out.println("divDivideByZeroThrows==========================="+mCalculator.div(32d,0d));
}
从运行结果Logcat日志可见:
括号里面表明当这个方法抛出IllegalArgumentException时测试成功。
这种方式看起来要简洁多了,但是无法检查异常中的消息。
方法二:ExpectedExceptionrule
单元测试用例:35除以0,设置预期异常类以及异常信息
@Rule
public ExpectedException exception =ExpectedException.none();
@Test
public void divDivideByZeroThrows_test03(){
exception.expect(IllegalArgumentException.class);
exception.expectMessage("zero1");
mCalculator.div(35d,0d);
}
从运行结果Logcat日志可见:
在try块中断言失败,报断言失败错误:预期包含“zero1”、但实际抛出的异常字符串是“secondOperand must be != 0, you cannot divide by zero”。
作 者:Testfan 彩虹
出 处:微信公众号:自动化软件测试平台
版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接
Android单元测试之google官例CalculatorTest的更多相关文章
- Android单元测试之二:本地测试
Android单元测试之二:本地测试 本地测试 本地测试( Local tests):只在本地机器 JVM 上运行,以最小化执行时间,这种单元测试不依赖于 Android 框架,或者即使有依赖,也很方 ...
- Android Google官方文档(cn)解析之——Intents and Intent filter
应用程序核心组件中的三个Activity,service,还有broadcast receiver都是通过一个叫做intent的消息激活的.Intent消息传送是在相同或不同的应用程序中的组件之间后运 ...
- Android Google官方文档解析之——Device Compatibility
Android is designed to run on many different types of devices, from phones to tablets and television ...
- 玩转单元测试之Testing Spring MVC Controllers
玩转单元测试之 Testing Spring MVC Controllers 转载注明出处:http://www.cnblogs.com/wade-xu/p/4311657.html The Spri ...
- 玩转单元测试之WireMock -- Web服务模拟器
玩转单元测试之WireMock -- Web服务模拟器 WireMock 是一个灵活的库用于 Web 服务测试,和其他测试工具不同的是,WireMock 创建一个实际的 HTTP服务器来运行你的 We ...
- [转载]单元测试之道(使用NUnit)
首先来看下面几个场景你是否熟悉 1.你正在开发一个系统,你不断地编码-编译-调试-编码-编译-调试……终于,你负责的功能模块从上到下全部完成且编译通过!你长出一口气,怀着激动而又忐忑的心情点击界面上的 ...
- 单元测试之道(使用NUnit)
首先来看下面几个场景你是否熟悉 1.你正在开发一个系统,你不断地编码-编译-调试-编码-编译-调试……终于,你负责的功能模块从上到下全部完成且编译通过!你长出一口气,怀着激动而 又忐忑的心情点击界面上 ...
- 单元测试之Qunit
单元测试之Qunit 前言 因为公司开发了一套javascript SDK需要测试,在网上找了很久,找到了JQuery团队开发的QUnit,和基于JUnit的JsUnit,还有一些还没有看,先讲讲QU ...
- Android自动化测试之环境搭建
Android自动化测试之环境搭建 一.Android-sdk介绍 SDK(Software development kit)软件开发工具包.被软件开发工程师用于为特定的软件包.软件框架.硬件平台. ...
随机推荐
- 监控系统-PMM
Percona Monitoring and Management (PMM)是一款开源的用于管理和监控MySQL和MongoDB性能的开源平台 通过PMM客户端收集到的DB监控数据用第三方软件Gra ...
- Winform非UI线程更新UI界面的各种方法小结
我们知道只有UI线程才能更新UI界面,其他线程访问UI控件被认为是非法的.但是我们在进行异步操作时,经常需要将异步执行的进度报告给用户,让用户知道任务的进度,不至于让用户误认为程序“死掉了”,特别是对 ...
- java:redis(redis安装配置,redis的伪集群配置)
1.redis安装配置: .安装gcc : yum install gcc-c++ .使用FTP工具FileZilla上传redis安装包到linux根目录下(当前步骤可以替换为:在root目录下执行 ...
- SICK激光扫描仪LMS511连接通讯
一.设备介绍: 型号:LMS511-10100(DC 24v) 品牌:SICK 操作环境:Windows 10 64bit 软件:SOPAS ET 连接线:串口转网口线(1根/4针 子头),电源线( ...
- 1 初识数据库操作 1 MySQL 数据库
1 数据类型与表的管理 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库. 常见数据库:Oracle.DB2.SQL Server.Postgre SQL.MySQL. 1.1 相 ...
- CNN卷积汇总
1,卷积作用:减少参数(卷积核参数共享),卷积过程中不断对上一个输出进行抽象,由局部特征归纳为全局特征(不同卷积层可视化可以观察到这点) 2,卷积核 早期卷积核由人工总结,如图像处理中有: 深度神经网 ...
- CISCO路由器WAN口动态ISP配置
Building configuration... version 15.0 service timestamps debug datetime msec service timestamps ...
- 【VS开发】【电子电路技术】VPX技术介绍
VPX技术介绍 杨跃江 2009-12-18 杨跃江 13902479857 中科祥云(深圳)信息产业有限公司 1VPX 技术 新型VPX(VITA 46)标准是自从VME引入后的25年来,对于VME ...
- C语言中typedef,条件编译,结构体的说明
目录 typedef (类型别名) 条件编译 条件编译在头文件包含中的应用 结构体 使用结构体定义新的结构体变量 结构体成员的引用与赋值 结构体指针及其引用 typedef (类型别名) typede ...
- Linux就该这么学——安装配置VM虚拟机
Vm虚拟机下载地址 : https://cloud.189.cn/t/zAfaQvJZRziu (访问码:6717) rehl镜像下载地址 : https://cloud.189.cn/t/67BJ ...