• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 基于Android系統的單元測試方法

    發表于:2011-01-25來源:作者:點擊數: 標簽:程序員javaJAVAJava蘋果CEO
    Android 單元測試 如果想在android里面做單元測試,有兩條基本的路子可行。 第一, 就是 java程序員 最為熟悉和常用的JUnit, 但是由于目前android sdk (version 1.1)中只是提供了stubbed methods/classes,沒有具體的實現代碼,所以如果用JUnit的話,我們需

    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>

      需要注意的是,在這里面我加上了:

      以及:

      Step 4.運行

      首先通過模擬器運行一下AndroidUT,然后在命令行終端中運行

      adb shell am instrument -e class com.android.ut.test.TestApp -wcom.android.ut/android.test.InstrumentationTestRunner

      這樣你就可以看到測試結果了。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>