执行测试用例类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. Kafka-manager安装部署

    一.kafka-manager 简介 为了简化开发者和服务工程师维护Kafka集群的工作,yahoo构建了一个叫做Kafka管理器的基于Web工具,叫做 Kafka Manager.这个管理工具可以很 ...

  2. etcd三节点安全集群搭建-pki安全认证

    etcd安全集群搭建就是 pki安装认证 1.环境: 三台centos7. 主机 192.168.0.91 192.168.0.92 192.168.0.93 都关闭防火墙 都关闭selinux 配置 ...

  3. Linux 如何上传/下载文件

    注: 如果在操作中,提示没有权限请使用" su - "命令来切换当前账号至" root " 账号 一 .    使用 rz / sz 命令 1 .  登陆 Li ...

  4. danbooru 图片下载工具。

    danbooru 是什么,查搜索引擎去吧. 试了四个站点 yande.re,konachan.com,danbooru.donmai.us,gelbooru.com ,其他就不知道了. 有的站点对搜索 ...

  5. mpVue学习笔记整理

    第一章: mpVue(Vue in Mini Program) 1.1 简介 美团工程师推出的基于Vue.js封装的用于开发小程序的框架 融合了原生小程序和Vue.js的特点 可完全组件化开发 1.2 ...

  6. 【AMAD】betamax -- 一个ruby-VCR的模仿品,只支持requests

    简介 动机 作用 用法 个人评分 简介 betamax1会记录你的HTTP操作,可以让你在测试的时候不必重复进行真实的请求. 动机 如果你的代码需要和外部资源一起运作,那么测试这段代码的方法就叫做集成 ...

  7. Kali Linux 2019.2安装谷歌输入法

    前言 Linux下常用的中文输入法平台有IBus.fcitx和scim.scim现在维护滞后,不推荐使用. IBus ("Intelligent Input Bus") 是一个 输 ...

  8. 华为HCNA乱学Round 6:PVID,TAG,TRUNK

  9. 【linux杂谈】遇到REMOTE HOST IDENTIFICATION HAS CHANGED怎么办?

    今日遇到如下问题: 警告的大概意思就是,主机密钥发生变更,并提示安全风险(可能存在中间人攻击) 但是事实是,这是因为我重装系统之后遇到的问题.重装系统后,指纹当然会发生变化了...在Xshell实验中 ...

  10. flask的方法视图

    from flask import Flask,views,render_template,request app = Flask(__name__) app.debug = True class L ...