[Android]再簡單解釋一下androidtest包下的其他測試類

大搜車-自娛發表於2013-11-07
簡單解釋一下android.test包下的其他測試類,給大家一個瞭解。


[b]Interfaces[/b]
PerformanceTestCase
PerformanceTestCase.Intermediates
TestSuiteProvider
[b]Classes[/b]
ActivityInstrumentationTestCase
ActivityInstrumentationTestCase2
ActivityTestCase
ActivityUnitTestCase
AndroidTestCase
AndroidTestRunner
ApplicationTestCase
InstrumentationTestCase
InstrumentationTestRunner
InstrumentationTestSuite
IsolatedContext
LoaderTestCase
MoreAsserts
ProviderTestCase
ProviderTestCase2
RenamingDelegatingContext
ServiceTestCase
SingleLaunchActivityTestCase
SyncBaseInstrumentation
TouchUtils
ViewAsserts



以上列出的是android.test包下的所有介面以及類,那麼簡單瞭解一下,起碼能夠不盲目崇拜框架,市場上的大多數框架都是基於android.test包來實現的,如果你發現沒有針對於它們來實現的,那麼有可能就是有root許可權的手機,或者作業系統是自己的手機反射來進行測試的,不過我也不能絕對這麼說,如果有其他好玩的框架,歡迎留言,我也去研究研究,謝謝。


[size=x-large][b]Interface[/b]介面[/size]
介面部分包含3個介面PerformanceTestCase、PerformanceTestCase.Intermediates、TestSuiteProvider。

[size=large][b]PerformanceTestCase[/b][/size]效能測試介面,也是當前某些測試開發工程師或者開發熟知的這麼一個效能測試手段,需要進行效能測試的類需要實現這個介面,採用白盒程式碼注入的方式獲取當前類的效能,這種方式不能講測試與開發程式碼進行很好的分離,當前使用範圍不大。不過推薦開發同學使用這種方式自測。

[size=large][b]PerformanceTestCase[/b][/size].Intermediates介面,是實現PerformanceTestCase類的回撥方法,用於收集相關的資料。使用方式: startPerformance (PerformanceTestCase.Intermediates intermediates),實現PerformanceTestCase的類可以直接呼叫startPerformance 方法。

[size=large][b]TestSuiteProvider[/b][/size]這個介面一般都不會直接使用,子類InstrumentationTestRunner比它好用,這個介面就是獲取一下testsuite。


[size=x-large][b]classes[/b]相關類[/size]
[size=large][b]ActivityInstrumentationTestCase[/b][/size],這是一個廢棄功能測試類,在API3之前的才可以使用,也就是android作業系統1.5版本,對當前的測試開發工程師來說,恩恩,忽略它吧。

[size=large][b]ActivityInstrumentationTestCase2[/b][/size],這個是當前主流用於測試apps功能的測試類,大名鼎鼎的robotium就是基於這個類來實現的,當前這個類的底層也用時instrmentation去玩android的,這個類直接使用系統底層資源來做測試,執行在ui執行緒中,意思就是,你使用這個類進行測試,肯定是需要將apps執行起來的,能看見介面的。他的父類是android.test.ActivityTestCase,爺爺是android.test.InstrumentationTestCase,你看這個拼爹的時代,有個好爹,這個類就非常好用了。

ActivityTestCase,這個類其實我個人認為沒有存在的必要,作為一個父親沒有做到父親的職責,就是讓整合它的兒子們屬性看起來明顯一點,恩,看你們整合ActivityTestCase肯定是測試Activity的,好吧,不推薦大家去使用了,它就是對爺爺instrumentationtestcase的整合,好用的功能都在instrumentationtestcase裡呢,對於父親來講,這一代家道中落。

[size=large][b]ActivityUnitTestCase[/b][/size],這個見我上一篇部落格,我詳細的說過。

[size=large][b]AndroidTestCase[/b][/size],這個類提供了可以讓我們控制context的入口,Context是什麼呢,我個人理解的,如果你做過j2ee開發,我理解這個context就是application session,全域性變數,在整個系統中我都能夠呼叫它,用它來傳遞一些資訊。並且多一個功能,我們可以理解為call,可以call一些功能,例如activity,接個廣播之類的。我們可能用它不多,主要看看它有什麼子類,ApplicationTestCase<T extends Application>, LoaderTestCase, ProviderTestCase2<T extends ContentProvider>, ServiceTestCase<T extends Service>,呵呵,看這些子類我們知道,父親就為他們幹了一件共同的事那就是Context,那麼具體你測試什麼,你得用我兒子的技能才行啊。

AndroidTestRunner,最基礎的runner類,來抓取執行過程中和執行結束後的一些資料,沒有具體使用過。

[size=large][b]ApplicationTestCase[/b][/size],主要用來測試Application,提供了對Application類生命週期方法的基本支援,並可以支援一些dependency injection 以幫助構造Application的環境,你有你再呼叫了createApplication之後才能嗲用oncreate方法。這個部分需要大家對android生命週期有相關的瞭解。依賴注入這裡,我們可以設定context物件來呼叫,也可以mock context物件。

[size=large][b]InstrumentationTestCase[/b][/size],android底層最核心呼叫activity的基礎裡,不要求大家去直接使用它,但是需要知道它能做什麼,有那些類是基於它實現的,他能夠開啟activity,攜帶intent開啟activity,併發send一些命令,讓手機或者虛擬機器執行這些命令。看一下它的兒孫們:Known Direct Subclasses
ActivityTestCase, ProviderTestCase<T extends ContentProvider>, SingleLaunchActivityTestCase<T extends Activity>, SyncBaseInstrumentation
Known Indirect Subclasses
ActivityInstrumentationTestCase<T extends Activity>, ActivityInstrumentationTestCase2<T extends Activity>, ActivityUnitTestCase<T extends Activity>,它的兒孫們這些你應該熟知幾樣吧,很多功能都是從它這來的,然後進一步封裝,來對android系統來傳送相關的操作命令。

[size=large][b]InstrumentationTestRunner[/b][/size]這個類和AndroidTestRunner類似,這個類現在我們主要用作重寫測試報告用的,他可以執行測試類,suite,獲取類名方法名,獲取到測試結果,那結果生成到eclipse,junit結果,你不喜歡看,那麼很多人就重寫這個類把結果寫到xml檔案裡,哦,然後生成你想看到的報告,就是衝這來的。可以直接使用adb shell am instrument -w命令列來呼叫它的相關功能。

[size=large][b]InstrumentationTestSuite[/b][/size]這個倒是沒什麼,就是類junit一樣的一個testsuite類,可以將測試方法作為suite,批量執行。

[size=large][b]IsolatedContext[/b][/size],一個mock的Context物件,他的爺爺就是Context物件。

LoaderTestCase,這個個人沒有使用過,留著以後調研一下吧

[size=large][b]MoreAsserts[/b][/size],這個類提供了一些在junit中你找不到的assert方法,比較實用,推薦。

[size=large][b]ProviderTestCase[/b][/size],與ActivityInstrumentationTestCase類似,已經被棄用。API3

[size=large][b]ProviderTestCase[/b][/size]這個類主要是來測試 ContentProvider的,ContentProvider為儲存和讀取資料提供了統一的介面,ContentProvider可以讓應用進行資料共享,那麼ProviderTestCase這個類主要是用來測試,資料讀取的,它與serviceTestCase一樣屬於元件級別的測試。

[size=large][b]ServiceTestCase[/b][/size],這個類是做androidservice測試的,可以使用intent進行傳遞開啟service服務,服務開啟後你的應用會做什麼樣的事情,你自己要清楚,然後針對伺服器開後的相關操作來進行驗證。

SingleLaunchActivityTestCase,不清楚
SyncBaseInstrumentation,不清楚

[size=large][b]TouchUtils[/b][/size],一個工具類用於你方便進行拖拽,下拉,長按等。

[size=large][b]ViewAsserts[/b][/size],一個關於view方面的assert方法的集合類。

相關文章