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)软件开发工具包.被软件开发工程师用于为特定的软件包.软件框架.硬件平台. ...
随机推荐
- 八十一:memcached之telnet操作memcached
先打开telnet服务否则会报错 确认memcached服务已启动 telnet ip 端口 连上以后敲一下回车 常用的命令: 1.set:在memcached中添加一个key->value,如 ...
- Spring RedisTemplate常用方法(List,Hash)
@Autowired private RedisTemplate<String, String> redisTemplate; @Override public List<Strin ...
- java:sso(单点登录(single sign on),jsp文件动静态导入方式,session跨域)
1.jsp文件导入: 2.session跨域: 3.sso(单点登录(single sign on): sso Maven Webapp: LoginController.java: package ...
- Leetcode之广度优先搜索(BFS)专题-1162. 地图分析(As Far from Land as Possible)
Leetcode之广度优先搜索(BFS)专题-1162. 地图分析(As Far from Land as Possible) BFS入门详解:Leetcode之广度优先搜索(BFS)专题-429. ...
- webgoat8百度云下载链接
网络不好的很难下载,网上也没什么好用的下载链接,我就上传了百度网盘,有需要的兄弟自己下. 链接:https://pan.baidu.com/s/1plTxkZUhSZm9vA5GGzYmMQ 提取码: ...
- Spring中重要的注解
现在大部分的Spring项目都会用到注解.使用注解来替换xml,一行简单的注解就可以解决很多事情.但是你真的懂其中的原理吗. 本文翻译于 https://docs.spring.io/spring-f ...
- [Python3] 035 函数式编程 高阶函数
目录 函数式编程 之 高阶函数 1. 引子 2. 系统提供的高阶函数 3. functools 包提供的 reduce 4. 排序 函数式编程 之 高阶函数 把函数作为参数使用的函数,叫高阶函数 1. ...
- PTA(Basic Level)1038.统计同成绩学生
本题要求读入 N 名学生的成绩,将获得某一给定分数的学生人数输出. 输入格式: 输入在第 1 行给出不超过 105 的正整数 N,即学生总人数.随后一行给出 N 名学生的百分制整数成绩,中间以空格分隔 ...
- [转帖]备忘:CentOS-7 使用systemctl 管理的服务,文件打开数上限1024要改
备忘:CentOS-7 使用systemctl 管理的服务,文件打开数上限1024要改 https://blog.csdn.net/toontong/article/details/50440272 ...
- 完全删除MySQL及相关软件
一.删除mysql服务 个人认为首先删除mysql服务最重要,这个多数人会忘记如何删除 首先是查看自己的mysql服务名,需要用这个服务名进行删除 进入命令行 二.卸载mysql,workbench等 ...