標籤:
為什麼Andr??oid應用的測試很重要?
Android裝置記憶體,CPU和電池都有限。應用的行為也外部因素有關,如串連性、系統利用等。因此調試、測試和最佳化Android應用非常重要。
Android的測試不可能覆蓋所有Android裝置,通常只覆蓋典型裝置。確保應用至少覆蓋儘可能低的配置裝置上使用和儘可能高的配置裝置,例如像素密度、螢幕解析度等。
2015年Android應用程的工具和架構的支援有巨大的改善。Android測試系統已經更新到基於JUnit4中,你可以在Java虛擬機器或在Android運行時運行單元測試。此外Google推出了一款名為Espresso的使用者介面測試架構。
Android自動化測試
Android應用的測試內容一般來說應該專註於測試應用的商務邏輯。建議:
- 70-80%的單元測試以確保您的代碼的穩定性
- 20-30%的功能測試確保應用能運作
- 有互動的情況下還需要考慮跨應用測試
Android單元和instrumentation單元測試
Android的單元測試是基於JUnit的。可分為:
- 本地單元測試 - 可以在JVM上運行測試(速度快,優先考慮)。
- Instrumented單元測試 - 需要Android系統
Android的Gradle外掛程式支援在JVM上執行Andr??oid單元測試。它使用特殊版本的android.jar(也稱為 Android mockable jar)支援單元測試,使所有欄位,方法和類可用。任何調用到Android mockable JAR預設都是異常。快速但是不能測試安卓相關內容。Instrumented可測試Android API。
工程結構和測試檔案夾
建議:
app/src/main/java - 原始碼
app/src/test/java - 本地測試
app/src/androidTest/java - Instrumented單元測試
如果你這些約定,Android構建系統會自動在JVM上運行單元測試、在Android裝置上運行安卓測試。
執行測試
指定測試類型:
查看測試執行:
如果看到"error duplicate files in path. Path in archive: LICENSE.txt"錯誤,修改app/gradle.build
android { packagingOptions { exclude ‘LICENSE.txt‘ }}
JVM單元測試
參考資料:http://www.sunmoonblog.com/blog/2015/06/10/android-testing/
安卓unit與instrumentation測試教程