1. 程式人生 > >Android SDK中的自動化測試

Android SDK中的自動化測試

Android中的測試手段非常豐富。通常上,按測試執行環境來劃分,可以分為本地單元測試與Instrument測試:

執行環境 測試型別
PC機 本地Unit Test
Android手機或模擬器 Instrument Test


這兩種型別測試原始碼在工程的位置分別為:

測試型別 對應目錄
本地Unit Test module-name/src/test/java
Instrument Test module-name/src/androidTest/java


這兩種測試使用的Runner不同:

測試型別 TestRunner
本地Unit Test JUnit4
Instrument Test JUnit3
AndroidJunit4


本地Unit Test由於使用Junit4,因此與java中的單元測試區別不大,可以靈活的使用Mockito來模擬呼叫Android的API。同時Android Studio在構建APP時,也會自動生成一個MockableAndroid.jar來支援這一需求。
Instrument型別測試由於類庫較多,因此使用的Runner也有所不同。比較常見到的有:

類名 說明 Runner
ApplicationTestCase Studio預設生成的類,用於測試Application。其可以完整控制Application的生命週期,並且可以通過setContext傳入Mock的Context物件進行注入測試。 Junit3
InstrumentationTestCase 自Eclipse環境起常用的測試類。可以通過獲取到Instrument控制APP執行,內部方法較為通用,通常需要二次封裝,並且APP中改進一些測試友好的設計。 Junit3
ActivityInstrumentationTestCase 專門設計來測試Activity的類,不過現在已經廢棄了,由ActivityInstrumentationTestCase2代替 AndroidJunit4
ActivityInstrumentationTestCase2 新的測試Activity的類,可以通過getAvtivity方法直接獲取到被測Activity;不過查閱最新的api24文件,這個類也可能要被廢棄 AndroidJunit4
ServiceTestCase 專門測試Service的類 AndroidJunit4


以上幾個類在Android SDK中就可以找到,都位於android.test包中。當然這個包中還有很多其他的測試類。
在Android 5.0版本起,Google又提供了一個專門用於自動化測試的Support包Android Testing Support Library,其中包括了測試所必要的AndroidJUnitRunner,還包括了兩個重要元件:
EspressoUI Automator,這兩者均是用來做UI自動化測試的框架。區別在於Espresso適用於單APP內部UI測試,而UI Automator適用於跨APP測UI測試。