在android中进行单元测试

在开发过程中,无论是什么语言,如果能够熟练使用单元测试, 提高的效率那是大大地,当测试或某相关的小姑娘报bug的时候,站在你身边,用无辜的大眼睛对 你说,“公子,有地方出问题”,正要打开相关的应用程序或者页面重现那个问题时,你大臂一挥,“XJ,不用那么麻烦,看在下的”,打开单元测试一跑,三下 两下搞定问题,那些连myeclipse都不知道怎么拼的MM,看到这一幕,能不五体投地吗?如果公司都是大老爷们,那首先要做的就和老板提意见,然后再 看下文。

  android的单元测试很简单,首先,新建一个android project。然后新建一个android test project,File-->Project-->Android-->Android Test Project。然后会弹出一个对话框“New Android Test Project”,填入工程名,在“an existing Android Project”中选择要单元测试的工程,其实就和那个东西挂钩,理解为母体和寄生虫的关系也未尝不可。当选择好Android Project工程之 后,下面的那些包名之类的自然就自动填好了。点“finish”,一个android test project就OK了--如果不是太倒霉的话。

   android test project工程下的目录结构和android project差不多,只是src下的package下多一个test包。接下来就开始创建junit了,像平常添加新类那样右击 包,New-->Junit Test Case,接下来就填junit名字,选择“New Junit3.0 Test”,Junit4.0没试过,但由于某些原因Junit4不一定能体现出Junit的特性来,一会说,现在不说,伏笔很重要,我的地盘我做 主...在下面吧setUp勾上。“finish”,现在就可以写测试

  代码,具体的实例代码如下:


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.helloAndroid.Books;
import com.helloAndroid.HelloAndroid;
import com.helloAndroid.R;

import android.R.xml;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class Junit3 extends ActivityInstrumentationTestCase2<Books> {

ListView listView;
Books books;

public Junit3() {
super("com.helloAndroid.HelloAndroid" ,Books.class);
// TODO Auto-generated constructor stub
}

protected void setUp() throws Exception {
super.setUp();
books = this.getActivity();

}

//添加testPreconditions()方法,检查初始化环境,只执行一次
public void testPreconditions() {

      //assertNotNull(integer);

}

//添加单元测试
public void testText() {

      //assertEquals(resourceString,(String)mView.getText());
List<Map<String, Object>> resourceName = new ArrayList<Map<String,Object>>();
Map<String ,Object> map = new HashMap<String, Object>();

map.put("line1", "测试Junit");
map.put("img", R.drawable.weikexue);
resourceName.add(map);

//listView = (ListView)books.findViewById(com.helloAndroid.R.id.l)
SimpleAdapter notes = new SimpleAdapter(
books,
resourceName,
R.layout.rows,
new String[]{"line1" ,"img"},
new int[]{R.id.text1,  R.id.img});

//books.setListAdapter(notes);
    }

}

   必须继承这个类ActivityInstrumentationTestCase2,通过泛型把要单元测试的目标类联系起 来,ActivityInstrumentationTestCase2<Books>,Books就是目标类,setUp() 方法是自动生成,因为刚才在创建的时间把“setUp()”的选项卡勾上了,如果没勾上的话,就重写一个,然后写两个方法 testPreconditions()和testText(),testText是单元测试的执行类,testPreconditions()不知道具 体干嘛的,千万切记要把这三个方法都写出来,否则报出来的错,你去google都搜不到解决方法。由于必须得有这三个类,而Junit4里是通过 annotation的方式标注测试的行为,android test project中用junit4可能会达不到预期效果,没测试过,反正在junit里少那三个方法,也是不行的,这是实践过的。

  最简单的单元测试就这样了。android的单元测试也是有一个很大的框架,ActivityInstrumentationTestCase2上面也继承了好多层。

====================================分割线================================

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-08-03 06:19:35

在android中进行单元测试的相关文章

在Android中进行单元测试遇到的问题

问题1.Cannot connect to VM  socket closed 在使用JUnit进行测试的时候,遇到这个问题.网上的解释是:使用Eclipse对Java代码进行调试,无论是远程JVM还是本地JVM都会进行Socket通讯.发生这样的错误是由于这些软件会修改winsock,还会监听和占用一些端口,Socket通讯不上造成的. 我通过cmd →ping localhost ,发现localhost指向::1,这是因为我的系统是win7 ,它支持IPv6的原因.而Eclipse需要lo

Android中使用HTTP服务上传文件

http://blog.csdn.net/liuhe688/article/details/6425225 在Android中,除了使用java.net包下的API访问HTTP服务之外,我们还可以换一种途径去完成工作.Android SDK附带了Apache的HttpClient API.Apache HttpClient是一个完善的HTTP客户端,它提供了对HTTP协议的全面支持,可以使用HTTP GET和POST进行访问.下面我们就结合实例,介绍一下HttpClient的使用方法. 我们新建

Android中使用HTTP服务的用法详解_Android

在Android中,除了使用Java.NET包下的API访问HTTP服务之外,我们还可以换一种途径去完成工作.Android SDK附带了Apache的HttpClient API.Apache HttpClient是一个完善的HTTP客户端,它提供了对HTTP协议的全面支持,可以使用HTTP GET和POST进行访问.下面我们就结合实例,介绍一下HttpClient的使用方法. 我们新建一个http项目,项目结构如图: 在这个项目中,我们不需要任何的Activity,所有的操作都在单元测试类H

Android中使用HTTP服务的用法详解

在Android中,除了使用Java.NET包下的API访问HTTP服务之外,我们还可以换一种途径去完成工作.Android SDK附带了Apache的HttpClient API.Apache HttpClient是一个完善的HTTP客户端,它提供了对HTTP协议的全面支持,可以使用HTTP GET和POST进行访问.下面我们就结合实例,介绍一下HttpClient的使用方法. 我们新建一个http项目,项目结构如图: 在这个项目中,我们不需要任何的Activity,所有的操作都在单元测试类H

Android中如何使用JUnit进行单元测试

在我们日常开发android app的时候,需要不断地进行测试,所以使用JUnit测试框架显得格外重要,学会JUnit可以加快应用的开发周期. Android中建立JUnit测试环境有以下两种方法. 一.直接在需要被测试的工程中新建测试类 集成步骤: 1.在androidManifest.xml文件中添加以下代码: <instrumentation android:name="android.test.InstrumentationTestRunner" android:targ

在 MVP 中进行单元测试

对于测试,大家都不陌生,但是我相信还是有部分开发觉得测试工作和自己没有直接关系.测试工作是测试工程师的事.惭愧的说,本人也是很长一段时间内没真正理解"测试"这件事儿,之前呆过的几家公司都没有真正的"测试工程师",确切的说,是没有会写代码的测试工程师,基本上都是手动测试,然后输出报告,测试无需懂技术,我相信国内很多公司都是这样,特别是 App 端的测试,很少有白盒测试的.这篇要说的东西不多,主要来说说单元测试,由于本人也是最近才开始实践,文章抛砖引玉,如果有说得不到位

《精通移动App测试实战:技术、工具和案例》一2.3 应用JUnit对Android项目进行单元测试

2.3 应用JUnit对Android项目进行单元测试 2.3.1 JUnit基于Android项目TestCase的应用 如果我们对基于Android系统项目开发有一定了解的话,相信一定能看出来,其核心代码是计算两个整数相加的函数.我们做单元测试当然也挑选其最核心的函数来进行测试.可以按照如下的步骤来创建一个基于Android项目的测试用例(TestCase). 第一步:选中"CalculatorOfTwoNum"项目下的"src"目录中的"com.yu

Android最佳Mock单元测试方案:Junit + Mockito + Powermock

本文旨在从实践出发,引导开发者在Android项目中进行Mock单元测试. 什么是单元测试 单元测试由一组独立的测试构成,每个测试针对软件中的一个单独的程序单元.单元测试并非检查程序单元之间是否能够合作良好,而是检查单个程序单元行为是否正确. 为什么要进行单元测试 在敏捷开发大行其道的今天,由于时间紧,任务重,过分依赖测试工程师以及下列原因,导致单元测试不被重视,在开发流程中处于一个可有可无的尴尬境地. 1. 浪费的时间太多 1. 软件开发人员不应参与单元测试 1. 我是很棒的程序员,不需要进行

Android下junit单元测试、logCat的使用

Android下junit单元测试 软件测试小知识: 根据测试是否知道源代码:黑盒测试:只关心程序执行的过程和结果白盒测试:根据源代码写测试方法或者测试用例. 根据测试的粒度: 方法测试:function test单元测试:unit test 集成测试:intergration test 根据测试的次数: 冒烟测试:smoke test(android 猴子) 压力测试:prssure testAndroid单元测试: 1.Android测试类要继承AndroidTestCase类 2.写测试方