簡體   English   中英

測試Android應用發布版本變體

[英]Testing Android app release build variant

我為Android應用程序編寫了許多單元測試和儀器測試。 到目前為止,我僅針對調試構建變體運行它們。 是否有必要針對發布版本進行測試? 從測試中得出不同的結果會有什么區別? 我能想到的主要內容是啟用ProGuard的時間,但尚未完成。 ProGuard將做什么,這使得必須運行我的測試套件? 我還應該知道還有哪些其他問題需要測試發行版本?

是否有必要針對發布版本進行測試?

我想你應該。

從測試中得出不同的結果會有什么區別?

幾個例子:

  • 您可能具有使用BuildConfig類的字段來啟用/禁用某些工作流的代碼。 一些庫也可能會使用它,尤其是BuildConfig.BUILD_TYPE 通常會執行以下操作:

     if (BuildConfig.BUILD_TYPE.equals("debug") { ACRA.init(...); Stetho.init(...); ... } 

    但是由於嘗試使用未正確初始化的組件/庫,導致代碼在發行版本中失敗。

  • 如您所述,ProGuard可能會丟棄某些類,除非對其進行了正確配置(例如,假設您忘記為某些第三方庫添加規則)。 針對發行版本運行測試可確保ProGuard配置正確。

ProGuard將做什么,這使得必須運行我的測試套件?

ProGuard可能會刪除通過反射加載的類/方法/字段,例如,除非您向它們添加@Keep批注。 它還可能重命名Realm,Retrofit,Gson或Volley等庫使用的類,從而導致所有單元測試和集成測試都通過調試版本(未啟用ProGuard),但在發布版本中失敗。 您肯定要在發貨我們的新APK前對其進行測試。

我還應該知道還有哪些其他問題需要測試發行版本?

發布版本可能還會應用PNG buildConfigField ,通過Gradle中的buildConfigField方法指定不同的參數,應用按ABI或密度拆分或啟用/禁用multidex等。 所有這些都會對您的應用程序的運行方式產生影響,因此,為什么不安全地進行測試。

使用它們可以發現的另一個常見問題是,確保您沒有將代碼錯誤地放在錯誤的位置(例如/src/debug/java/ ),而該錯誤恰巧是在調試版本中加載的,而不是在其他變體中加載的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM