以下是本人原創,如若轉載和使用請注明轉載地址。本博客信息切勿用於商業,可以個人使用,若喜歡我的博客,請關注我,謝謝!
博客地址
感謝您支持我的博客,我的動力是您的支持和關注!如若轉載和使用請注明轉載地址,並且請尊重勞動成果,謝謝!
一、什么是Instrumentation?
Instrumentation和Activity有點類似,只不過Activity是需要一個界面的,而Instrumentation並不是這樣的,我們可以將它理解為一種沒有圖形界面的,具有啟動能力的,用於監控其他類(用Target Package聲明)的工具類。
二、測試原理
Android 測試環境的核心是一個Instrumentation框架,在這個框架下,你的測試應用程序可以精確控制應用程序。使用Instrumentation, 你可以在主程序啟動之前,創建模擬的系統對象,如Context;控制應用程序的多個生命周期;發送UI事件給應用程序;在執行期間檢查程序狀態。 Instrumentation框架通過將主程序和測試程序運行在同一個進程來實現這些功能。
三、測試架構的特點
1、基於JUnit:Android的測試套件是基於JUnit的,我們呢,可以使用junit測試,而不調用android的api。
2、提供特定的用例類:Android JUnit擴展提供特定組件的測試用例類。這些類提供的輔助方法,用於創建模擬對象和方法,幫助你控制組件的生命周期。
3、不需要學習新的技術:測試套件中包含的測試包類似於主應用程序包,所以你不需要學習一套新的工具或技術來設計和建造的測試。
4、自動構建清單文件:
我們使用sdk adt eclipse這些工具,能夠自動的從被測程序中得到所需的信息。
四、框架圖講解
下圖是app測試框架圖


說明:mock其實就是android.test包下的一個模擬類
我們可以看到api中對mock的介紹,實用工具用於提供各種android框架的測試或者模擬。

說明:現在就開始說明這個最為關鍵的類InstrumentationTestRunner了
解釋說此類是一個基於android包運行不同種類的測試例的Instrumentation。
五、下面的圖片概要的描述了Android的測試環境:

在 Android中,測試程序也是Android程序,因此,它和被測試程序的書寫方式有很多相同的地方。SDK工具能幫助你同時創建主程序工程及它的測試 工程。你可以通過Eclipse的ADT插件或者命令行來運行Android測試。Eclipse的ADT提供了大量的工具來創建測試用例,運行以及查看 結果。