Android学习笔记之如何对应用进行单元测试

开发环境:

  Win XP + eclipse-jee-helios(版本号3.6) + ADT(版本10.0.1) + Android SDK(版本10);

  模拟器及真机测试环境:Android2.2

  在Android软件的开发过程中,可以使用Junit测试框架。在Junit中可以得到组件,可以模拟发送事件和测试程序处理的正确性。

  第一步:在新建项目中,创建待测试的业务类,在cn.hao.service包中,代码如下:


package cn.hao.service;

//业务类,待测试的两个方法

public class PersonaService {

public void save(String username){

String sub = username.substring(6);

}

public int add(int a,int b){

return a+b;

}

}

  说明:对于save()方法,如果参数为null,那么这个方法会发生错误;对add()方法,我们测试相加返回的相加结果是否正确。

  第二步:为应用引进单元测试环境

  在AndroidManifest.xml中加入如下代码:

  <uses-library android:name="android.test.runner"/>

  <instrumentation android:name="android.test.instrumentationTestRunner"

  android:targetPackage="cn.hao.JunitTest" android:label="Test for My App" />

  引入的位置如下:


<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="cn.hao.JunitTest"

android:versionCode="1"

android:versionName="1.0">

<uses-sdk android:minSdkVersion="8" />

<application android:icon="@drawable/icon" android:label="@string/app_name">

<activity android:name="cn.hao.test.MainActivity"

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:name="android.test.instrumentationTestRunner"

android:targetPackage="cn.hao.JunitTest" android:label="App Test"

/>

</manifest>

  说明:在项目中使用单元测试,就是检查程序及处理结果的正确性。

 第三步:新建一个类,测试业务类,代码如下:


package cn.hao.junit;

import junit.framework.Assert;

import cn.hao.service.PersonaService;

import android.test.AndroidTestCase;

public class PersonServiceTest extends AndroidTestCase {

public void testSave() throws Exception {

PersonaService service = new PersonaService();//new出测试对象

service.save(null);

}

public void testAdd() throws Exception {

PersonaService service = new PersonaService();

int actual = service.add(1, 2);

Assert.assertEquals(3, actual);

}

}

 

 注意:该类需继承单元测试框架父类android.test.AndroidTestCase类,测试方法最好是抛出异常给测试框架。方法Assert.assertEquals(3, actual)中参数3是期望(理论上)返回的果,actual是实际上返回的结果。

  第四步:运行测试类

  在大纲OutLine视图中,右击测试方法->Run As->Android Junit Test,会将项目自动部署到模拟器上,测试的结果会以颜色的形式显示,绿色表示方法正确,否则该方法不正确,Eclipse会给出详细的说明,根据帮助文档可以查看相应的错误信息。

  如测试上述testSave()方法时,会给出如下提示:

  当然,save()从第六位开始取子字符串,但是该方法现在的参数为null,会发生空指针异常。

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

时间: 2024-09-20 00:13:10

Android学习笔记之如何对应用进行单元测试的相关文章

Android学习笔记45之gson解析json_Android

JSON即JavaScript Object Natation, 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. JSON对象: JSON中对象(Object)以"{"开始, 以"}"结束. 对象中的每一个item都是一个key-value对, 表现为"key:value"的形式, key-value对之间使用逗号分隔. 如:{"name":"coolxing

Android学习笔记(二)App工程文件分析_Android

App工程文件分析 关于如何创建一个最简单的Android App请参照链接: < Android学习笔记(一)环境安装及第一个hello world > http://www.jb51.net/article/52593.htm 创建完的工程文件如下图所示,本文对一些主要的文件进行分析. src文件分析 App源文件如图: 打开源文件 MainActivity.java 可看到如下代码: 源码主要功能如下: App源文件目录 package com.example.firstapp; 导入A

Android学习笔记之应用单元测试实例分析_Android

本文实例讲述了Android学习笔记之应用单元测试.分享给大家供大家参考,具体如下: 第一步:在AndroidManifest.xml中加入如下两段代码: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.pccw" android:versionCode="1" android:versionName="1.0&qu

Android学习笔记之应用单元测试实例分析

本文实例讲述了Android学习笔记之应用单元测试.分享给大家供大家参考,具体如下: 第一步:在AndroidManifest.xml中加入如下两段代码: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.pccw" android:versionCode="1" android:versionName="1.0&qu

Android学习笔记45之gson解析json

JSON即JavaScript Object Natation, 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. JSON对象: JSON中对象(Object)以"{"开始, 以"}"结束. 对象中的每一个item都是一个key-value对, 表现为"key:value"的形式, key-value对之间使用逗号分隔. 如:{"name":"coolxing

Android学习笔记——文件路径、内容Uri学习笔记[转]

一.URI 通用资源标志符(Universal Resource Identifier, 简称"URI"). Uri代表要操作的数据,Android上可用的每种资源 - 图像.视频片段等都可以用Uri来表示. URI一般由三部分组成: 访问资源的命名机制.  存放资源的主机名.  资源自身的名称,由路径表示.  Android的Uri由以下三部分组成: "content://".数据的路径.标示ID(可选) 举些例子,如:  所有联系人的Uri: content:/

Android学习笔记——保存数据到SQL数据库中(Saving Data in SQL Databases)

知识点: 1.使用SQL Helper创建数据库            2.数据的增删查改(PRDU:Put.Read.Delete.Update) 背景知识:                  上篇文章学习了保存文件,今天学习的是保存数据到SQL数据库中.相信大家对数据库都不陌生.对于                             大量重复的,有特定结构的             数据的保存,用 SQL数据库 来保存是最理想不过了.             下面将用一个关于联系人的数

Android学习笔记——Intents 和 Intent Filters(二)

 本人邮箱:JohnTsai.Work@gmail.com,欢迎交流讨论.       欢迎转载,转载请注明网址:http://www.cnblogs.com/JohnTsai/p/3993488.html 知识点:            继续昨天的Intents 和 Intent Filters的学习        组成一个Intent(Building an Intent):           Intent 对象携带信息(例如明确的组件名或应该接收intent的组件种类(intent ca

Android学习笔记之ContentProvider和Uri详解_Android

本文介绍了自定义Content Provider的相关内容,完全解析内容提供者的用法.Content Provider,内容提供者,相信大家对这个组件的名字都不陌生,可能是自己平时做的都是一些简单的App,所以对于Content Provider的使用并不是很多,也不是特别熟悉.但是这里还是对Content Provider作个简单的总结,不是很深入,但是希望能给包括我在内的初学者一点帮助,看完这篇能对这个组件有个总体上的了解. 一.使用ContentProvider(内容提供者)共享数据 Co