如果想在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;
import android.os.Bundle;

public class AndroidUT extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

public int add(int a, int b)
{
return a + b;
}
}

  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> {

public TestApp()
{
super("com.android.ut", AndroidUT.class);
}

public void testSum()
{
assertEquals(5, getActivity().add(2, 3));
}
}

  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,然后在命令行终端中运行

  adbshellam instrument -e class com.android.ut.test.TestApp -wcom.android.ut/android.test.InstrumentationTestRunner

  这样你就可以看到测试结果了。

更多相关文章

  1. Activity之生命周期
  2. 在手机上开发程序之AIDE(Android集成开发环境)介绍
  3. Android(安卓)Systrace使用介绍
  4. Android中常常使用shape来定义控件的一些显示属性,今天看了一些sh
  5. 安卓Kotlin之小白翻译一
  6. Android(安卓)NDK开发之旅(1): Eclipse中NDK环境搭建与JNI开发流
  7. Android(安卓)防止手机休眠
  8. Android基础入门教程——7.1.3 Android(安卓)HTTP请求方式-HttpU
  9. Android(安卓)破解apk文件

随机推荐

  1. afinal的简单应用(一)
  2. Android之GridView简单说明
  3. Android(安卓)ListView中点击单行实现Rad
  4. 《Android学习大纪事之--属性动画ObjectA
  5. Android(安卓)Support v4、v7、v13的区别
  6. windows修改Android(安卓)AVD路径
  7. Android高手进阶教程(十一)之----Android
  8. Android基于XMPP Smack Openfire开发IM(2)
  9. 创建和使用Android(安卓)library工程
  10. Android(安卓)自动化测试——Monkey测试