执行测试用例类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. frei0r-1.7.0 20191207-0d4b342 DLLs

    https://files.cnblogs.com/files/nlsoft/frei0r-20191207-0d4b342-bin.7z

  2. CTF—攻防练习之HTTP—SQL注入(X-forwarded-For)

    主机:192.168.32.152 靶机:192.168.32.162 nmap,dirb扫ip,扫目录 在后台发现一个login,登录界面 然后直接上扫描器AVWS,发现存在X—Forwarded— ...

  3. Python学习之认知(一)

    第二章(一) 2.1 python介绍 2.1.1 python是一种什么样的语言 ​ 编程语⾔主要从以下几个⻆度为进行分类,编译型和解释型.静态语言和动态语⾔.强类型定义语言和弱类型定义语言. 编译 ...

  4. 神经网络的debug

    先建一个只有一层隐藏层的网络确定一切工作正常 在一个数据点上训练,training accuracy应该马上到100%而val accuracy等于随机猜测(overfit),如果不是说明有bug. ...

  5. 将PostgreSQL数据库的表导入到elasticsearch中

    1.查看PostgreSQL表结构和数据信息 edbstore=# \d customers Table "edbstore.customers" Column | Type | ...

  6. Java基础(五)

    方法概述 方法的定义格式 什么是方法?方法就好像是一个工厂. 如奶牛场 原料:奶牛,饲料 产出物:牛奶,各种奶制品 程序当中的方法 参数(原料):进入方法的数据 返回值(产出物):从方法中出来的数据 ...

  7. 【一道来自老师的题的题解】equip——奇妙的最短路

    这道题真的第一眼完全想不到是最短路啊!!!!!!!! 感谢DR大佬讲解!!!!!90°鞠躬 =u= 暂时没有评测网址,(因为需要special judge)敬请期待 机房另一大佬JYY题解,可以对比参 ...

  8. 面试35-删除字符串重复字符-删除出现在第二个字符串中的字符-第一个只出现一次的字符-hash表计数

    #include<iostream>#include<algorithm>#include<functional>using namespace std;char ...

  9. # 「NOIP2010」关押罪犯(二分图染色+二分答案)

    「NOIP2010」关押罪犯(二分图染色+二分答案) 洛谷 P1525 描述:n个罪犯(1-N),两个罪犯之间的仇恨值为c,m对仇恨值,求怎么分配使得两件监狱的最大仇恨值最小. 思路:使最大xxx最小 ...

  10. 华为wlan配置流程及相关重要步骤AC配置

    本次介绍是AC+fitAP组网方式的重要步骤. 一.基础配置 1.规划好ac+ap的组网方式和转发方式.(本次以三层旁挂直接转发),规划管理vlan,业务vlan,与AC连接的vlan,以及他们接口的 ...