zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Mybatis中#{}和${}传参的区别
    笔记摘抄 —— shiro学习篇
    使用Spring的Testcase的单元测试的写法
    【转】FreeMarker学习笔记
    破解Pycharm,IDEA,PhpStrom等系列产品的,有关JetbrainsCrack的使用方法
    Python的字符串
    python的变量
    python开头注释
    h5-动画小案例-滚动展示
    h5-钟表动画案例
  • 原文地址:https://www.cnblogs.com/jinsdu/p/2919874.html
Copyright © 2011-2022 走看看