android單元測試框架_第1頁
android單元測試框架_第2頁
android單元測試框架_第3頁
android單元測試框架_第4頁
android單元測試框架_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

android單元測試框架第一頁,共27頁??焖偕鲜种改螶ava基礎知識知道如何使用Eclipse(調試工具、模擬器)Android系統(tǒng)基礎知識熟悉Android單元測試框架環(huán)境需求JDKEclipse(安裝ADT插件)AndroidSDKPS百度:在Windows下搭建Android開發(fā)環(huán)境第二頁,共27頁。目錄初始Android系統(tǒng)Junit與Android框架Instrumentation

TestCase類項目實踐第三頁,共27頁。Android系統(tǒng)

1、完全使用Java語言編寫;2、運行在AndroidDalvik虛擬機之上;3、它通過JavaJNI接口調用本地庫的接口。第四頁,共27頁。Android系統(tǒng)—四大組件

Activity:每個屏幕就是一個活動;通過意圖(Intent)對象激活;

完整生命周期:onCreate()到onDestroy()可見生命周期:onStart()到onStop()前景生命周期:onResume()到onPause()第五頁,共27頁。Android系統(tǒng)—四大組件

Service:

在后臺運行,用于處理長時間任務而影響前臺用戶體驗的組件;一個活動,可以啟動后臺服務,也可以綁定到一個后臺服務;通過意圖(Intent)對象激活;AstartedserviceAboundservice第六頁,共27頁。Android系統(tǒng)—四大組件

BroadcastReceive廣播接收組件:廣播接收組件是用來響應系統(tǒng)層面的廣播通知的組件;通過意圖(Intent)對象激活;生命周期:為從回調onReceive()方法開始到該方法返回結果后結束,大概10秒左右;ContentProvider內容提供組件:用來管理應用的可共享部分的數(shù)據(jù)。應用可以將數(shù)據(jù)存儲在文件系統(tǒng)、SQLite數(shù)據(jù)庫、網(wǎng)絡或任何一個應用可以訪問的永久存儲設備。第七頁,共27頁。目錄初始Android系統(tǒng)Junit與Android框架Instrumentation

TestCase類項目實踐第八頁,共27頁。Junit與Android框架

junit測試類庫和android中單元測試類庫:Android測試環(huán)境的主要特征:可以訪問Android系統(tǒng)對象。Instrumentation框架可以控制和測試應用程序。運行單個test或testsuite的工具,帶或不帶Instrumentation。支持以Eclipse的ADT插件和命令行方式管理Test和Test工程。

在這些包中最為重要的是:

junit.framework、

android.test,其中前者是JUnit的核心包,后者是AndoidSDK在Junit.framework的基礎上擴展出來的包(未實現(xiàn)參數(shù)化)。SDK功能說明junit.frameworkJUnit測試框架junit.runner實用工具類支持JUnit測試框架android.testAndroid對JUnit測試框架的擴展包android.test.mockAndroid的一些輔助類第九頁,共27頁。Junit與Android框架

junit.framework:第十頁,共27頁。android.test包:第十一頁,共27頁。AndroidTestCase類

AndroidTestCase類

繼承自JUnit的TestCase,不能使用Instrumentation框架。但這些類包含訪問系統(tǒng)對象(如Context,最主要的功能是加載和訪問資源)的方法。使用Context,你可以瀏覽資源,文件,數(shù)據(jù)庫等等?;愂茿ndroidTestCase。子類有:ApplicationTestCase——測試整個應用程序的類。它允許你注入一個模擬的Context到應用程序中,在應用程序啟動之前初始化測試參數(shù),并在應用程序結束之后銷毀之前檢查應用程序。ProviderTestCase2——測試單個ContentProvider的類。因為它要求使用MockContentResolver,并注入一個IsolatedContext,因此Provider的測試是與OS孤立的。ServiceTestCase——測試單個Service的類。你可以注入一個模擬的Context或模擬的Application(或者兩者),或者讓Android為你提供Context和MockApplication。第十二頁,共27頁。InstrumentationTestCase類

InstrumentationTestCase類繼承自JUnitTestCase類,并可以使用Instrumentation框架,用于測試Activity。使用Instrumentation,Android可以向程序發(fā)送事件來自動進行UI測試,并可以精確控制Activity的啟動,監(jiān)測Activity生命周期的狀態(tài)?;愂荌nstrumentationTestCase。它的所有子類都能發(fā)送按鍵或觸摸事件給UI。子類有:

ActivityTestCase——Activity測試類的基類。SingleLaunchActivityTestCase——測試單個Activity的類。它能觸發(fā)一次setup()和tearDown(),而不是每個方法調用時都觸發(fā)。如果你的測試方法都是針對同一個Activity的話,那就使用它吧。SyncBaseInstrumentation——測試ContentProvider同步性的類。它使用Instrumentation在啟動測試同步性之前取消已經(jīng)存在的同步對象。ActivityUnitTestCase——對單個Activity進行單一測試的類。使用它,你可以注入模擬的Context或Application,或者兩者。它用于對Activity進行單元測試。不同于其它的Instrumentation類,這個測試類不能注入模擬的Intent。ActivityInstrumentationTestCase2——在正常的系統(tǒng)環(huán)境中測試單個Activity的類。你不能注入一個模擬的Context,但你可以注入一個模擬的Intent。另外,你還可以在UI線程(應用程序的主線程)運行測試方法,并且可以給應用程序UI發(fā)送按鍵及觸摸事件。第十三頁,共27頁。目錄初始Android系統(tǒng)Junit與Android框架Instrumentation

TestCase類項目實踐第十四頁,共27頁。Instrumentation

TestCase類

Android測試環(huán)境的核心是一個Instrumentation框架:運行ActivityManager,使用Instrumentation框架啟動和控制TestRunner;TestRunner反過來又使用Instrumentation來關閉任何主程序的實例;啟動測試程序及主程序,在同一個進程中;確保測試程序與主程序間的直接交互;第十五頁,共27頁。InstrumentationTestCase類

publicclassInstrumentation

TestCaseextends

TestCase

knownDirectSubclassesActivityTestCase,ProviderTestCase<T

extends

ContentProvider>,SingleLaunchActivityTestCase<T

extends

Activity>,SyncBaseInstrumentationknownIndirectSubclassesActivityInstrumentationTestCase<T

exends

Activity>,ActivityInstrumentationTestCase2<T

extends

Activity>,ActivityUnitTestCase<T

extends

Activity>AndroidDevelopers網(wǎng)址/intl/zh-cn/reference/android/test/ActivityInstrumentationTestCase.html第十六頁,共27頁。Instrumentation

TestCase類

PublicMethodsInstrumentationgetInstrumentation()得到當前case的instrumentation對象voidinjectInstrumentation(Instrumentation

instrumentation)將instrumentation對象注入到當前case中.該方法會在setup方法中被調用final<T

extends

Activity>TlaunchActivity(String

pkg,

Class<T>activityCls,

Bundle

extras)啟動activityfinal<T

extends

Activity>TlaunchActivityWithIntent(String

pkg,

Class<T>activityCls,

Intent

intent)啟動一個帶有特殊intent的activityvoidrunTestOnUiThread(Runnable

r)在UiThread線程中啟動casevoidsendKeys(String

keysSequence)發(fā)送鍵盤事件,從字符串里提取事件的標識,每個事件以空格拼接voidsendKeys(int...keys)發(fā)送一系列的keycode值,代表一系列的鍵盤事件voidsendRepeatedKeys(int...keys)參數(shù)的形式為點擊的次數(shù)n,鍵盤事件keycode.例如(2,KEYCODE_MENU)按2次菜單鍵第十七頁,共27頁。InstrumentationTestCase類核心Code:啟動待測應用并打開待測的activity1.設置用戶名文本框具體輸入焦點;2.因為這段代碼需要操作界面的控件,因此需要運行在待測應用的線程中,而不是測試用例的線程中;3.只需要將要在UI線程上執(zhí)行的代碼作為參數(shù)傳入runOnUiThread函數(shù)里就可以了,代碼塊是放在Runnable匿名對象的run()函數(shù)里輸入手機號碼輸入密碼hong123第十八頁,共27頁。Instrumentation

TestCase子類

--ActivityTestCase

publicabstractclassActivityTestCaseextends

InstrumentationTestCase

ProtectedMethodsActivity

getActivity()獲得Activity的值voidscrubClass(Class<?>testCaseClass)在tearDown方法執(zhí)行時,調用一系列的TestCase接口,為了擦除一些類變量voidsetActivity(ActivitytestActivity)設置Activity值第十九頁,共27頁。InstrumentationTestCase子類

--ActivityUnitTestCase

publicabstractclassActivityUnitTestCase

extends

ActivityTestCase

通常用來測試單獨Activity,用于Activity的單元測試。在啟動被測試的Activity之前,你可以Inject一個假的Context或是Application,使用這個Mock的Context中一個隔離環(huán)境中運行被測試的Activity。在setUp中,創(chuàng)建了一個MockIntent對象mStartIntent用于測試Activity第二十頁,共27頁。InstrumentationTestCase子類

--ActivityUnitTestCase

PublicMethodsTgetActivity()intgetFinishedActivityRequest()得到finishActivity(int)中傳入的參數(shù)值。如果返回-1代表沒完成intgetRequestedOrientation()得到setRequestedOrientation(int)中傳入的值。

IntentgetStartedActivityIntent()得到startActivity(Intent)

or

startActivityForResult(Intent,int)中intent的值;intgetStartedActivityRequest()得到startActivityForResult(Intent,int)中的參數(shù)值booleanisFinishCalled()是否完成調用,若調用了

finish(),

finishFromChild(Activity),or

finishActivity(int)方法,該方法將收到通知voidsetActivityContext(Context

activityContext)設置上下文對象voidsetApplication(Application

application)設置Application對象第二十一頁,共27頁。InstrumentationTestCase子類

--ActivityInstrumentationTestCase2

publicabstractclassActivityInstrumentationTestCase2extends

ActivityTestCase通常用于多個Activity的功能測試,它使用正常的系統(tǒng)框架來運行Activity(使用應用程序本身),并使用正常系統(tǒng)Context(非Mock)來測試Activity的功能。允許你創(chuàng)建一些MockIntent用來測試Activity的響應。*這種TestCase不允許使用Mock的Context和Application對象測試,也就是說你必須使用和應用程序實際運行的環(huán)境來測試。PublicMethodsTgetActivity()得到Activity對象voidsetActivityInitialTouchMode(booleaninitialTouchMode)設置觸摸模式開關,在getActivity()之前調用;voidsetActivityIntent(Intent

i)設置intent對象,在getActivity()之前調用;第二十二頁,共27頁。InstrumentationTestCase子類

--ActivityInstrumentationTestCase2核心Code:關閉待測應用的觸控模式,以便發(fā)送按鍵事件;這個操作必須在調用getActivity()之前調用啟動

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論