Android单元测试思路
如果想在android里面做单元测试,有两条基本的路子可行。
第一, 就是java程序员最为熟悉和常用的JUnit, 但是由于目前android sdk (version 1.1)中只是提供了stubbed methods/classes,没有具体的实现代码,所以如果用JUnit的话,我们需要在运行单元测试时,一定要 用JDK来运行,利用java命令来启动JUnit的某个Runner。如果是用Eclipse的话,可以在Run Configuration里新建一个JUnit。但是一定要记得在Classpath选项卡里将Bootstrap Entries中的Android Library改成JRE,并且添加junit.jar。具体的设置可以参考:http://developer.android.com/guide/appendix/faq/troubleshooting.html#addjunit。 而且,更为遗憾的是,这种方法运行的JUnit运行在JDK之上的,而不是android,所以,只能测试一些和android无关的东西,比如业务逻辑,数据封装,数值计算等等。并不能测试android api。
第二, 采用Instrumentation. Android单元测试的主入口是InstrumentationTestRunner。它相当于JUnit当中TestRunner的作用。你可以将Instrumentation理解为一种没有图形界面的,具有启动能力的,用于监控其他类(用Target Package声明)的工具类。任何想成为Instrumentation的类必须继承android.app.Instrumentation。
下面通过一个实例来看一下如何通过Instrumentation来做单元测试。
Step 1.首先编写需要测试的activity:
package com.android.ut; import android.app.Activity; public class AndroidUT extends Activity { |
Step 2.
接下来编写测试类,其中主要来测试add()方法。我们在当前代码目录下,在新建一个文件夹,命名为test,并在里面新建了包com.android.ut.test。然后往里面新增加一个class.具体如下:
package com.android.ut.test; import com.android.ut.AndroidUT; import android.test.ActivityInstrumentationTestCase; public class TestApp extends ActivityInstrumentationTestCase<AndroidUT> { |
Step 3.最后一步就是要改一下Manifest文件。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.ut" android:versionCode="1" android:versionName="1.0.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".AndroidUT" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <uses-library android:name="android.test.runner" /> </application> <instrumentation android:targetPackage="com.android.ut" android:name="android.test.InstrumentationTestRunner" android:label="Test Unit Tests"></instrumentation> </manifest> |
需要注意的是,在这里面我加上了:
<uses-library android:name="android.test.runner" />
以及:
<instrumentation android:targetPackage="com.android.ut" android:name="android.test.InstrumentationTestRunner" android:label="Test Unit Tests"></instrumentation>
Step 4.运行
首先通过模拟器运行一下AndroidUT,然后在命令行终端中运行
adb shell am instrument -e class com.android.ut.test.TestApp -wcom.android.ut/android.test.InstrumentationTestRunner
这样你就可以看到测试结果了。
Android单元测试思路相关推荐
- Android单元测试框架Robolectric3.0介绍(二)
文章中的所有代码在此:https://github.com/geniusmart/LoveUT ,由于 Robolectric 3.0 和 3.1 版本(包括后续3.x版本)差异不小,该工程中包含这两 ...
- android单元测试作用,Android单元测试源码解读
Android手机操作系统是一个开源的操作系统.程序员们可以在模拟器的帮助下对其进行修改,来实现各种功能需求,满足用户的应用.在这里我们先来了解一下Android单元测试的相关内容. 在网络上找了半天 ...
- Android单元测试学习总结
文章目录 一.本地单元测试 1. 创建测试类 2. Assert类中的常用断言方法 3. 运行测试类 4. 运行单个测试方法或多个测试类 二.Mockito测试框架的使用 1. Mock概念的理解 2 ...
- Android单元测试框架Robolectric3.0介绍(一)
Android单元测试框架Robolectric3.0介绍(一) 作者 geniusmart 关注 2016.01.21 00:37* 字数 1550 阅读 18265评论 55喜欢 124赞赏 2 ...
- Android单元测试 > 整理分享
Android单元测试 单元测试? What? 项目中为了测试某一个代码单元而写的测试代码:用于执行项目中的目标函数并验证其逻辑状态或者结果.这些代码是白盒测试,能够检测目标代码的准确性和可靠性,在打 ...
- Android单元测试全解
自动化测试麻烦吗?说实在,麻烦!有一定的学习成本.但是,自动化测试有以下优点: 节省时间:可以指定测试某一个activity,不需要一个个自己点 单元测试:既然Java可以进行单元测试,Andro ...
- Android 单元测试学习计划
网上查了一下Android单元测试相关的知识点,总结了一个学习步骤: 1. 什么是单元测试 2. 单元测试正反面: 2.1. 重要性 2.2. 缺陷 2.3. 策略 3. 单元测试的基础知识: 3.1 ...
- Android单元测试 - 几个重要问题
前言 已经一个月没写文章了,由于9月份在plan国庆旅行计划,国庆前前后后去了14天旅行,所以没时间写,哈哈. 言归正传,上一篇文章<Android单元测试 - 如何开始?>介绍了几款单元 ...
- Android单元测试研究与实践
处于高速迭代开发中的Android项目往往需要除黑盒测试外更加可靠的质量保障,这正是单元测试的用武之地.单元测试周期性对项目进行函数级别的测试,在良好的覆盖率下,能够持续维护代码逻辑,从而支持项目从容 ...
最新文章
- ns 25的IKE模式ipsec ***配置
- 如何放出Linux内核中的链表大招
- 面试真题:搜索旋转数组
- javascript提取标签之间的信息
- 易校网校园综合跑腿小程序源码修复运营版
- 惠普:计算机在非洲大有可为(zz)
- redux使用教程详细介绍
- rabbitmq可靠性投递_RabbitMQ可靠性
- 百度大脑 EasyDL 专业版最新上线自研超大规模视觉预训练模型
- 20多个Maven命令和选项(备忘单)
- 微信小程序-滚动消息通知
- 关于UIText换行
- C++11 关键字override和final
- Python 文本转语音
- pdf编辑器哪个好 怎么添加pdf文件水印
- ArrayList打印出来为什么会有空格
- python数据分析案例简单实战项目(二)--疫情数据分析
- g suite_什么是G Suite?
- Acrel-6000/B电气火灾监控系统麻城广场设计与应用
- 棋牌游戏代理:如何做好微信公众号的SEO?