Android SDK中的自動化測試
阿新 • • 發佈:2018-12-23
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
,還包括了兩個重要元件:
Espresso
與UI Automator
,這兩者均是用來做UI自動化測試的框架。區別在於Espresso
適用於單APP內部UI測試,而UI Automator
適用於跨APP測UI測試。