执行测试用例类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的更多相关文章

  1. Android单元测试之二:本地测试

    Android单元测试之二:本地测试 本地测试 本地测试( Local tests):只在本地机器 JVM 上运行,以最小化执行时间,这种单元测试不依赖于 Android 框架,或者即使有依赖,也很方 ...

  2. Android Google官方文档(cn)解析之——Intents and Intent filter

    应用程序核心组件中的三个Activity,service,还有broadcast receiver都是通过一个叫做intent的消息激活的.Intent消息传送是在相同或不同的应用程序中的组件之间后运 ...

  3. Android Google官方文档解析之——Device Compatibility

    Android is designed to run on many different types of devices, from phones to tablets and television ...

  4. 玩转单元测试之Testing Spring MVC Controllers

    玩转单元测试之 Testing Spring MVC Controllers 转载注明出处:http://www.cnblogs.com/wade-xu/p/4311657.html The Spri ...

  5. 玩转单元测试之WireMock -- Web服务模拟器

    玩转单元测试之WireMock -- Web服务模拟器 WireMock 是一个灵活的库用于 Web 服务测试,和其他测试工具不同的是,WireMock 创建一个实际的 HTTP服务器来运行你的 We ...

  6. [转载]单元测试之道(使用NUnit)

    首先来看下面几个场景你是否熟悉 1.你正在开发一个系统,你不断地编码-编译-调试-编码-编译-调试……终于,你负责的功能模块从上到下全部完成且编译通过!你长出一口气,怀着激动而又忐忑的心情点击界面上的 ...

  7. 单元测试之道(使用NUnit)

    首先来看下面几个场景你是否熟悉 1.你正在开发一个系统,你不断地编码-编译-调试-编码-编译-调试……终于,你负责的功能模块从上到下全部完成且编译通过!你长出一口气,怀着激动而 又忐忑的心情点击界面上 ...

  8. 单元测试之Qunit

    单元测试之Qunit 前言 因为公司开发了一套javascript SDK需要测试,在网上找了很久,找到了JQuery团队开发的QUnit,和基于JUnit的JsUnit,还有一些还没有看,先讲讲QU ...

  9. Android自动化测试之环境搭建

    Android自动化测试之环境搭建 一.Android-sdk介绍 SDK(Software development kit)软件开发工具包.被软件开发工程师用于为特定的软件包.软件框架.硬件平台. ...

随机推荐

  1. 监控系统-PMM

    Percona Monitoring and Management (PMM)是一款开源的用于管理和监控MySQL和MongoDB性能的开源平台 通过PMM客户端收集到的DB监控数据用第三方软件Gra ...

  2. Winform非UI线程更新UI界面的各种方法小结

    我们知道只有UI线程才能更新UI界面,其他线程访问UI控件被认为是非法的.但是我们在进行异步操作时,经常需要将异步执行的进度报告给用户,让用户知道任务的进度,不至于让用户误认为程序“死掉了”,特别是对 ...

  3. java:redis(redis安装配置,redis的伪集群配置)

    1.redis安装配置: .安装gcc : yum install gcc-c++ .使用FTP工具FileZilla上传redis安装包到linux根目录下(当前步骤可以替换为:在root目录下执行 ...

  4. SICK激光扫描仪LMS511连接通讯

    一.设备介绍: 型号:LMS511-10100(DC 24v) 品牌:SICK 操作环境:Windows 10  64bit 软件:SOPAS ET 连接线:串口转网口线(1根/4针 子头),电源线( ...

  5. 1 初识数据库操作 1 MySQL 数据库

    1 数据类型与表的管理 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库. 常见数据库:Oracle.DB2.SQL Server.Postgre SQL.MySQL. 1.1 相 ...

  6. CNN卷积汇总

    1,卷积作用:减少参数(卷积核参数共享),卷积过程中不断对上一个输出进行抽象,由局部特征归纳为全局特征(不同卷积层可视化可以观察到这点) 2,卷积核 早期卷积核由人工总结,如图像处理中有: 深度神经网 ...

  7. CISCO路由器WAN口动态ISP配置

        Building configuration... version 15.0 service timestamps debug datetime msec service timestamps ...

  8. 【VS开发】【电子电路技术】VPX技术介绍

    VPX技术介绍 杨跃江 2009-12-18 杨跃江 13902479857 中科祥云(深圳)信息产业有限公司 1VPX 技术 新型VPX(VITA 46)标准是自从VME引入后的25年来,对于VME ...

  9. C语言中typedef,条件编译,结构体的说明

    目录 typedef (类型别名) 条件编译 条件编译在头文件包含中的应用 结构体 使用结构体定义新的结构体变量 结构体成员的引用与赋值 结构体指针及其引用 typedef (类型别名) typede ...

  10. Linux就该这么学——安装配置VM虚拟机

    Vm虚拟机下载地址 : https://cloud.189.cn/t/zAfaQvJZRziu (访问码:6717) rehl镜像下载地址 :  https://cloud.189.cn/t/67BJ ...