Android如何在測試程序中刪除被測應用私有的原始數據


我們知道在Android App測試時,當我們想把應用程序恢復的初始狀態,我們通常可以有以下幾種做法:

手動

到Setting -> Apps -> 單擊我們要測得應用程序 -> 選擇Clear data

這樣重新啟動App的時候,我們的程序就處於初始狀態了。

命令行

當然我們也是可以使用命令行來操作的,比如:

adb shell pm clear my.app.package

只要把對應的包名,改成你自己的就可以了。

自動化

要是能自動化就更加完美了,這樣我們就可以在我們的自動化Case里添加相應的恢復App原始狀態的代碼了,如此我們就可以保證我們的Case總是在一個一致的測試環境中,豈不更美?

這里我找到了兩種方法。

方法一:在VBS腳本中添加代碼,完成操作

Set objWsh = CreateObject("Wscript.Shell")
objWsh.Run "adb shell pm clear my.app.package",1, True

方法二:在Android Test Project中添加相應代碼刪除私有原始數據

        Context context = this.getInstrumentation().getTargetContext().getApplicationContext();        
        Editor edit = context.getSharedPreferences(m_strPreferencesName, Context.MODE_PRIVATE).edit();
        edit.clear();
        edit.commit();

當然我這里是刪除名叫“m_strPreferencesName”的數據,如果我們想刪除其他,或者所有的Share Preferences數據都是可以的。

請注意:

雖然Java 有Java.lang.runtime,我們可以通過它在運行時去執行Command命令,完成一些操作,但是在Android里,類似下面的代碼就不可以:

        try
        {
            Runtime.getRuntime().exec("adb shell pm clear com.my.package");
        }
        catch(IOException ex)
        {
            ex.printStackTrace();
        }

這里不會拋任何異常,而且也不會清除App的數據。

這是因為Andorid的安全機制不允許一個App去刪除另一個App的數據。

參考資料:

http://stackoverflow.com/questions/5544205/accessing-application-context-from-testsuite-in-setup-before-calling-getactivi

http://stackoverflow.com/questions/4856955/how-to-programatically-clear-application-data

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM