一、建立测试环境

安装了Android Developer Tools (ADT) 插件的Eclipse将为你创建,构建,以及运行Android程序提供一个基于图形界面的集成开发环境。Eclipse的一项方便的特性是可以自动为你的Android应用项目创建一个对应的测试项目。

1、建立一个Android工程(如下,名为AndroidNormalProject)、或者导入已经存在的工程。

2、生成一个该工程对应的测试工程

在工程上右击-->Android Tools-->New Test Project...

二、创建与执行测试用例

Activity都是通过结构化的方式编写的。请务必把你的测试代码放在一个单独的包内,从而与其它的正在测试的代码分开。

按照惯例,你的测试包的名称应该遵循与应用包名相同的命名方式,在应用包名后接“.tests”。在你创建的测试包,为你的测试用例添加Java类。按照惯例,你的测试用例名称也应遵循你要测试的Java或Android的类相同的名称,但后缀为“Test”。

1、新建测试包 和对应的测试用例名称(工程包名.test)

工程包:

测试包:

2、建立测试夹具(Fixture)

测试夹具由对象必须由一个或多个正在运行测试来初始化。要建立测试夹具,你可以在你的测试中重写setUp()和tearDown()方法。测试会在运行任何其它测试方法之前自动调用setUp()方法。你可以用这些方法来保持代码的测试初始化和清理是分开。

import android.test.ActivityInstrumentationTestCase2;
import android.widget.TextView; import com.example.androidnormalproject.MainActivity;
import com.example.androidnormalproject.R; public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity>{ private MainActivity mMainActivity;
private TextView mTextView; public MainActivityTest() {
super(MainActivity.class);
} @Override
protected void setUp() throws Exception {
super.setUp();
mMainActivity = getActivity();
if(mMainActivity == null) return;
mTextView = (TextView) mMainActivity.findViewById(R.id.helloword_text);
} @Override
protected void tearDown() throws Exception {
super.tearDown(); } }

3、添加一个测试前提

在正式测试之前,我们先保证测试的对象正确的实例化和初始化,添加一个testPreconditions()方法

	public void testPreconditions() {
assertNotNull("mMainActivity is null", mMainActivity);
assertNotNull("mTextView is null", mTextView);
}

4、添加一个测试方法验证Activity

	public void testMainActivityTextView_helloword(){
final String expected = mMainActivity.getString(R.string.hello_world);
final String actual = mTextView.getText().toString();
assertEquals(expected, actual);
}

5、运行测试

Run As --> Android Junit Test


三、测试UI组件

1、测试一个Button的布局

	/**
* 测试Button的布局
*/
public void testMainActivityButton_layout(){
final View decorView = mMainActivity.getWindow().getDecorView();
//是否在屏幕内
ViewAsserts.assertOnScreen(decorView, mButton); final ViewGroup.LayoutParams layoutParams =
mButton.getLayoutParams();
assertNotNull(layoutParams);
//测试布局属性
assertEquals(layoutParams.width, WindowManager.LayoutParams.MATCH_PARENT);
assertEquals(layoutParams.height, WindowManager.LayoutParams.WRAP_CONTENT);
}

2、验证按钮的行为

	/**
* 测试按钮点击事件
*/
public void testMainActivityButton_onClick(){
String expectedInfoText = mMainActivity.getString(R.string.button_text);
TouchUtils.clickView(this, mButton);
assertTrue(View.VISIBLE == mButton.getVisibility());
assertEquals(expectedInfoText, mButton.getText());
}

注意:上面的TouchUitl是将事件安全的从其他线程发送到UI线程,不应该将该方法用于UI线程中使用。

3、应用测试的注释

@SmallTest

标志着一个测试运行的小型测试的一部分

@MediumTest

标志着一个测试运行的中等测试的一部分

@LargeTest

标志着一个测试运行的大型测试的一部分

转载请说明出处:http://blog.csdn.net/dawanganban

总结:用上面简单介绍的测试方法就可以建立适合我们的单元测试(测试代码中可能性最小的代码块)和功能测试(验证单个应用组件是否与使用者期望的那样与其它组件协同工作)

Android程序测试的更多相关文章

  1. 20162311 编写Android程序测试查找排序算法

    20162311 编写Android程序测试查找排序算法 一.设置图形界面 因为是测试查找和排序算法,所以先要有一个目标数组.为了得到一个目标数组,我设置一个EditText和一个Button来添加数 ...

  2. pc端和android端应用程序测试有什么区别?(ps面试题)

    pc端和android端应用程序测试有什么区别?(ps面试题) [VIP7]大连-凭海临风(215687736) 2014/4/10 8:56:171.测试环境不同PC平台一般都是windows an ...

  3. 十大免费移动程序测试框架(Android/iOS)

    十大免费移动程序测试框架(Android/iOS) 概述:本文将介绍10款免费移动程序测试框架,帮助开发人员简化测试流程,一起来看看吧. Bug是移动开发者最头痛的一大问题.不同于Web应用程序开发, ...

  4. 手机测试Android程序

    手机测试Android程序   上传者:sanpi329     我也要“分享赚钱” 2014/7/9 关注(23) 评论(0)   声明:此内容仅代表网友个人经验或观点,不代表本网站立场和观点.   ...

  5. Android开源测试框架学习

    近期因工作需要,分析了一些Android的测试框架,在这也分享下整理完的资料. Android测试大致分三大块: 代码层测试 用户操作模拟,功能测试 安装部署及稳定性测试 代码层测试 对于一般java ...

  6. Android程序crash处理

    Android程序crash处理 时间 2014-11-24 13:45:37  CSDN博客 原文  http://blog.csdn.net/allen315410/article/details ...

  7. Android压力测试工具——Monkey

    Android压力测试工具——Monkey Monkey是运行在模拟器上和真机设备上的一段程序,它会产生用户事件的一系列伪随机流,比如点击.触摸.手势,还有很多系统级别的事件.Monkey通常是用来做 ...

  8. android程序---->android多线程下载(一)

    多线程下载是加快下载速度的一种方式,通过开启多个线程去执行一个任务,可以使任务的执行速度变快.多线程的任务下载时常都会使用得到断点续传下载,就是我们在一次下载未结束时退出下载,第二次下载时会接着第一次 ...

  9. Eclipse开发Android程序如何在手机上运行

    android开发不论是在真机上调试还是最终发布到真机上都非常简单,过程如下: 1.安装usb驱动 手机要能与电脑相连,当然要安驱动了.效果就是你插入手机,电脑显示驱动已识别.驱动安装的官方教程:ht ...

随机推荐

  1. Linux bash常用快捷键

    移动光标 ctrl-a 光标移动到行首 ctrl-e 光标移动到行尾 ctrl+xx 在行首和光标位置直接切换 ctrl-b 光标左移一位 ctrl-f 光标右移一位 alt-b 光标左移一词 alt ...

  2. 紫书 习题 11-17 UVa 1670 (图论构造)

    一开始要符合题目条件, 那么肯定没有任何一个点是孤立的, 也就是说没有点的度数是1 所以我就想让度数是1的叶子节点相互连起来.然后WA 然后看这哥们的博客 https://blog.csdn.net/ ...

  3. 【转】 值得推荐的C/C++框架和库 (真的很强大)

    [转] 值得推荐的C/C++框架和库 (真的很强大) 值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个 ...

  4. ActiveMQ安装部署(Windows)

    JMS(Java Messaging Service)是Java平台上有关面向消息中间件的技术规范,它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生.发送.接收消息的接口简化企业 ...

  5. java用jxl实现导出execl表格

    //先将需要导出的数据放到list中 //然后将list中的数据放到execl表中 @RequestMapping(params="exportExecl") public Str ...

  6. O(1)复杂度增加和删除和随机取

    题目: https://leetcode.com/problems/insert-delete-getrandom-o1-duplicates-allowed 非常好的解法: https://disc ...

  7. litepal更好的操作sqlite3,配置与基本操作

    litepal更好的操作sqlite3 配置 在app下的build.gradle中加入 创建litepal.xml配置 在app/src/main下面创建assets,新建litepal.xml & ...

  8. [poj 3904] sky code 解题报告(组合计算+容斥原理)

    题目链接:http://poj.org/problem?id=3904 题目大意: 给出一个数列,询问从中取4个元素满足最大公约数为1的方案数 题解: 很显然,ans=总的方案数-最大公约数大于1的4 ...

  9. SSM中使用POI实现excel的导入导出

    环境:导入POI对应的包 环境: Spring+SpringMVC+Mybatis POI对应的包 <dependency> <groupId>org.apache.poi&l ...

  10. windows gitbub使用

    1.安装git bush (windows没什么好说的 下一步,下一步,,) 2. 通过gitbush命令行生成密钥: (拷贝密钥) 3.密钥添加到github上面: 4.克隆项目: 5.提交: 查看 ...