編輯: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;
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,
然後在命令行終端中運行
adb shell am instrument -e class com.android.ut.test.TestApp -wcom.android.ut/android.test.InstrumentationTestRunner
這樣你就可以看到測試結果了。
前面在Android RoboGuice 使用指南(1):概述 對應Roboguice做了簡要的介紹 ,之後介紹了Google Guice的基本用法,Roboguice是
App->Activity->Custom Dialog 例子使用Activity 來實現自定義對話框。 類CustomDialogActivity本身無任何
相信很多的朋友都有在APP中實現定位的需求,今天我就再次超炒冷飯,為大家獻上國內開發者常用到的三種定位方式。它們分別為GPS,百度和高德,慣例先簡單介紹下定位的背景知識。
這個例子的Icons Only 和 Icons and marquee 沒有什麼特別好說明的。而Use Remote views in balloon 介紹了可 以自定