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

 

 

转载于:https://www.cnblogs.com/jinsdu/archive/2013/02/21/2919874.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261947.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言结构体编程,[编程] C语言的结构体详解

结构体struct 结构体名{}变量名;结构体变量:struct person{char *name;int age;float score;} student;成员的获取和赋值//Members of the acquisition and assignmentstudent.name"taoshihan";student.age30;student.score100;printf("name%s \n&qu…

基于.NET Framework 4.0的解决方案部署

VS 2010发布之后,随着而来的框架版本也升级到了.NET Framework 4.0。我相信很多朋友已经在用了吧。这一篇文章总结了如何基于.NET Framework 4.0,进行解决方案部署。 之所以要单独写一下,是因为确实这个版本与之前的.NET Framework 2.0&#…

chrome网页自动化插件_chrome网页注释插件

问题背景:tensorflow中文官方文档无法做网页注释。原本使用Hypothesis - Web & PDF Annotationdiigo达到了500个注释的上限,继续做注释,每次注释均为弹出超过上限的提醒,影响学习。目前结论:Scrible Toolbarhttps:…

【BZOJ 3098】 Hash Killer II

Description 这天天气不错,hzhwcmhf神犇给VFleaKing出了一道题:给你一个长度为N的字符串S,求有多少个不同的长度为L的子串。子串的定义是S[l]、S[l 1]、... S[r]这样连续的一段。两个字符串被认为是不同的当且仅当某个位置上的字符不同。 VF…

如何在Windows Azure VM上的SQL Server和Windows Azure SQL Database两者中做出选择

作者信息:本篇文章是由SQL Server Cloud Infrastructure Team的 Madhan Arumugam 和 Guy Bowerman共同著作。 简介 把SQL 数据托管在哪里,Windows Azure 为您提供了两个选择,VM上的SQL Server(以下简称 SQL/VM)和 Wind…

MFC 控件布局

在MFC要自己控制控件随窗口变化而改变其大小 以下提供一个解决办法,easysize.h来自codeproject /Files/pbreak/EasySize.rar 第一:添加消息映射 afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg void OnSizing(UINT fwSide, LPRECT pRect); ON_WM_SIZE()…

c语言离散卷积编程,实验一 离散卷积的C语言编程.ppt

实验一 离散卷积的C语言编程.ppt实验一 离散卷积的C语言编程实验 DSP实验室 实验性质 综合设计性实验 实验目的 1 了解和认识常用的各种信号; 2 掌握卷积的定义和计算方法; 3 掌握在计算机中生成以及绘制信号序列图的方法。 实验原理 离散时间系统中几种…

graphviz 画决策树_数据挖掘入门系列教程(四)之基于scikit-lean决策树处理Iris

数据挖掘入门系列教程(四)之基于scikit-lean决策树处理Iris加载数据集数据特征训练随机森林调参工程师结尾数据挖掘入门系列教程(四)之基于scikit-lean决策树处理Iris在上一篇博客,我们介绍了决策树的一些知识。如果对…

设计模式UML图

1.简单工厂模式 2.工厂模式 工厂模式与简单工厂模式的不同在于,每个操作类都有自己的工厂,而且把逻辑判断交给了客户端,而简单工厂的逻辑判断在工厂类里边,当增加新的操作类时,简单工厂需要修改工厂类,而工…

Android小項目之--ListView與ListAcitivity完善論壇管理效果2(附源碼)

ListAcitivity 类型布局用来配置应用程序,主要为显示菜单列表、列表明细项目,假如让程序继承 ListActivity ,可以实现以下的方法: getListAdapter()  取得目前列表项目的 AdaptergetListView()  取得目前列表的 ViewgetSelectedItemId() …

c语言编辑输出后汉字乱码,为什么这个程序会输出汉字乱码

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include #include #include #include int main(void){int correct false;char anothergame *Y*;int counter 0;int sequencelength 0;time_t seed 0;int number 0;time_t now 0;int time_taken0;int i1;printf(&qu…

Ctrl+F5不能使用的问题

axure中F5生成整个原型,CtrlF5是生成当前的单个页面。 如果碰到CtrlF5不能生成的情况,则表明当前的页面处在母版页,动态面板的状态页,或者在生成页面中,没有勾选生成所有页面转载于:https://www.cnblogs.com/zlhayden/…

docker 覆盖 entrypoint_最佳实践,Dockerfile中ENTRYPOINT与CMD指令的区别与建议

通过本文你会获得什么熟悉Dockerfile中ENTRYPOINT和CMD指令之间的区别,以及在实际项目中的使用建议。1 - 开始前准备首先你要有个docker环境,以下实验基于:docker 18.09,以及alpine:3.8镜像。下载基础镜像docker pull alpine:3.82…

《修改winXP pro安装界面》 、《修改winXP pro开机画面》、《修改winXP pro登录画面》...

一、《修改winXP pro安装界面》 ---------------------------- 安装界面----也就是安装复制完系统文件,重启进入的安装界面,这个界面停留的时间较长,值得一改以 供欣赏,复制完winXP pro的安装文件到硬盘上后,点击“i38…

单实例单向rac搭建gg流

1、 m1 m2 m3 source端 2、 在m1 m2 m3 上 /etc/hosts 172.16.10.140 source source上 添加 #public network 172.16.15.101 m1 172.16.15.102 m2 172.16.15.103 m3 #private network 10.11.11.1 m1-pri 10.11.11.2 m2-pri 10.11.11.3 m3-pri 29 #VIP network 172.16.15.1…

int0低电平触发c语言,单片机中断的解释.ppt

单片机中断的解释在CPU和外设交换信息时,存在着快速CPU和慢速外设间的矛盾,机器内部有时也可能出现突发事件,为此,计算机中通常采用中断技术。 中断 CPU和外设并行工作,当外设数据准备好( 或有某种突发事件发生)时向CP…

python自动登录教程_Python 实现自动登录+点击+滑动验证功能

需要用到的库有selenium,还需要安装Chrome浏览器驱动,具体如何安装我就不详述了 在这里我模拟了csdn的登录过程 ** 1**.首先打开网页,用户名密码登录,然后定位用户名输入框,和密码输入框,输入后 点击登陆 弹…

js 字符ascii码转换函数

字符转ascii码&#xff1a;用charCodeAt();ascii码砖字符&#xff1a;用fromCharCode(); 看一个小例子<script>str"A";code str.charCodeAt(); str2 String.fromCharCode(code);str3 String.fromCharCode(0x6026);document.write(code<br />);documen…

【生活智慧】005.信守诺言的约束

《塔木德》指出&#xff0c;信守诺言的约束&#xff0c;重视集体的力量&#xff0c;永远怀着必胜的信念的等&#xff0c;都有助于一个人获得成功。 下面的故事生动地诠释了这些使很多犹太人受益一生的原则。 丛林中走出了四个男人&#xff0c;他们蓬头垢面&#xff0c;衣衫褴褛…

python c 语言接口,## 人生苦短我用python[0x08] 使用ctypes调用c语言接口 ##

文章内容为原创&#xff0c;欢迎转载请注明出处作者&#xff1a; EflyPro->晦明禅师1.背景python作为解析语言大规模应用在各个领域&#xff0c;c语言作为系统级别的语言广泛应用在基础&#xff0c;系统&#xff0c;网络等底层服务当中&#xff0c;可以说python和c语言之间各…