Android如何在测试程序中删除被测应用私有的原始数据

阅读目录

我们知道在Android App测试时,当我们想把应用程序恢复的初始状态,我们通常可以有以下几种做法:

回到顶部

手动

到Setting -> Apps -> 单击我们要测得应用程序 -> 选择Clear data

这样重新启动App的时候,我们的程序就处于初始状态了。

回到顶部

命令行

当然我们也是可以使用命令行来操作的,比如:

adb shell pm clear my.app.package

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

回到顶部

自动化

要是能自动化就更加完美了,这样我们就可以在我们的自动化Case里添加相应的恢复App原始状态的代码了,如此我们就可以保证我们的Case总是在一个一致的测试环境中,岂不更美?

这里我找到了两种方法。

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

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

方法二:在Android Test Project中添加相应代码删除私有原始数据

复制代码

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

复制代码

当然我这里是删除名叫“m_strPreferencesName”的数据,如果我们想删除其他,或者所有的Share Preferences数据都是可以的。

请注意:

虽然Java 有Java.lang.runtime,我们可以通过它在运行时去执行Command命令,完成一些操作,但是在Android里,类似下面的代码就不可以:

复制代码

1try { 2 Runtime.getRuntime().exec("adb shell pm clear com.my.package"); 3 } catch(IOException ex) 4 { 5 ex.printStackTrace(); 6 }

复制代码

这里不会抛任何异常,而且也不会清除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

软件开发测试,关注测试自动化,单元测试,压力测试,寻找测试之美

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )