2017-06-24 38 views
0

我已經爲我的Android應用編寫了許多單元和儀器測試。到目前爲止,我只針對調試版本變體運行這些。是否有必要針對發佈版本變體運行測試?有什麼不同可能會給測試帶來不同的結果?我能想到的主要是啓用ProGuard的時候,我還沒有這樣做。 ProGuard會做什麼使得運行我的測試套件變得有必要?我應該知道哪些其他問題需要測試發佈版本變體?測試Android應用發佈構建變體

回答

1

是否需要針對發佈版本變體運行測試?

我認爲你應該。

有什麼區別可能會給測試帶來不同的結果?

幾個例子:

  • 你可能有一個使用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方法指定不同的參數,由ABI或密度應用拆分或啓用/禁用multidex等。所有這些都可能會影響您的應用程序的工作方式,爲什麼不在安全的方面並對其進行測試。

另一個常見的問題,你可以捕捉使用這些是確保你不小心把代碼中錯誤的位置(例如/src/debug/java/)是發生在調試要加載的建立而不是在其他的變種。

相關問題