Android如何在测试程序中删除被测应用私有的原始数据
我們知道在Android App測(cè)試時(shí),當(dāng)我們想把應(yīng)用程序恢復(fù)的初始狀態(tài),我們通常可以有以下幾種做法:
手動(dòng)
到Setting -> Apps -> 單擊我們要測(cè)得應(yīng)用程序 -> 選擇Clear data
這樣重新啟動(dòng)App的時(shí)候,我們的程序就處于初始狀態(tài)了。
命令行
當(dāng)然我們也是可以使用命令行來(lái)操作的,比如:
adb shell pm clear my.app.package只要把對(duì)應(yīng)的包名,改成你自己的就可以了。
自動(dòng)化
要是能自動(dòng)化就更加完美了,這樣我們就可以在我們的自動(dòng)化Case里添加相應(yīng)的恢復(fù)App原始狀態(tài)的代碼了,如此我們就可以保證我們的Case總是在一個(gè)一致的測(cè)試環(huán)境中,豈不更美?
這里我找到了兩種方法。
方法一:在VBS腳本中添加代碼,完成操作
Set objWsh = CreateObject("Wscript.Shell") objWsh.Run "adb shell pm clear my.app.package",1, True方法二:在Android Test Project中添加相應(yīng)代碼刪除私有原始數(shù)據(jù)
Context context = this.getInstrumentation().getTargetContext().getApplicationContext(); Editor edit = context.getSharedPreferences(m_strPreferencesName, Context.MODE_PRIVATE).edit();edit.clear();edit.commit();當(dāng)然我這里是刪除名叫“m_strPreferencesName”的數(shù)據(jù),如果我們想刪除其他,或者所有的Share Preferences數(shù)據(jù)都是可以的。
請(qǐng)注意:
雖然Java 有Java.lang.runtime,我們可以通過(guò)它在運(yùn)行時(shí)去執(zhí)行Command命令,完成一些操作,但是在Android里,類(lèi)似下面的代碼就不可以:
try{Runtime.getRuntime().exec("adb shell pm clear com.my.package");}catch(IOException ex){ex.printStackTrace();}這里不會(huì)拋任何異常,而且也不會(huì)清除App的數(shù)據(jù)。
這是因?yàn)锳ndorid的安全機(jī)制不允許一個(gè)App去刪除另一個(gè)App的數(shù)據(jù)。
參考資料:
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
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/jinsdu/archive/2013/02/21/2919874.html
總結(jié)
以上是生活随笔為你收集整理的Android如何在测试程序中删除被测应用私有的原始数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 续航1000公里 15分钟充满!电动爹要
- 下一篇: 看完微软给Win11写的新介绍 我坚定了