发布新日志

  • Android 自动化测试—robotium Ant 构建脚本-zt

    2013-03-19 10:30:57

    转自:http://blog.csdn.net/congyuandong/article/details/7886395


    robotium 的脚本是 Java 写的,就可以利用 ant 去构建。当然 build.xml 文件同 Selenium WebDriver 的 build.xml 也是不同的。

    Ant:http://luwenjie.blog.51cto.com/925779/831345

     

    可以参考 robotium 官方 Wiki 解决 Robotium 覆盖率的问题:

    http://code.google.com/p/robotium/wiki/QuestionsAndAnswers

     

    1.对于 robotium tests 我们不必自己写 build.xml。

    参考一下命令:

    android update test-project -m [path to target application] -p [ path to the foler ]

     

    2.需要把 robotium.jar 放到测试项目的 libs 目录中,ant将来需要去引用

     

    3.简单使用ant进行构建.

     

    关键在于:<import file="${sdk.dir}/tools/ant/build.xml" />

    自动生成的build.xml中将android自带的ant build 文件所包含进来。

    这个build.xml 建议详细阅读,能够学到很多东西。

    因为这里default启动的是help,所以当我们直接运行 ant 时,将返回help内容

     

    根据help提示,运行test 就是运行测试

     

    当然我们可以更改default为test,那样默认运行ant 就是运行测试了。

  • robotium:solo.sendKey(solo.MENU);无响应问题记录

    2013-03-14 11:48:18


    这两天使用robotium,在使用solo.sendKey(solo.MENU);时,遇到奇怪问题
    有时AVD有响应,有时又没有响应

    后来发现规律是:
    一个testcase中,第一条命令是:
    solo.sendKey(solo.MENU);
    会无响应;

    如果非第一条命令,则有响应;

    后面遇到testcase中,第一条命令是:
    solo.sendKey(solo.MENU);
    都直接在前面加一句,类似:
    solo.clickOnButton("按钮");

    这样就都可以正常执行了;

    感觉像是新的一个testcase,聚焦到app下,sendKey就能知道是针对这个app似的。。。
  • robotium:一个testsuite中加入多个testcase第二个会卡住的问题记录

    2013-03-14 11:41:57



    看官方的例子,LAUNCHER_ACTIVITY_FULL_CLASSNAME可通过re-sign.jar得到
    re-sign.jar返回的是打开app时的第一个页面使用的activity


    testsuite中包含多个testcase
    1、登录用例
    2、登录成功后,其它功能的用例
    。。。


    执行时,到第二个就会卡住。。。


    这些testcase,LAUNCHER_ACTIVITY_FULL_CLASSNAME都使用第一个activity即启动app后的登录页

    但在执行第二个及以后的用例,需要的activity不是登录页这个activity,而是登录后页面的activity


    修改第二及以后的用例的LAUNCHER_ACTIVITY_FULL_CLASSNAME为登录后页面的activity
    (登录用例执行完,logcat中可看到当前是在哪个activity,这个一般就是登录后页面的activity)

    再执行testsuite,正常运行;

  • robotium:LAUNCHER_ACTIVITY_FULL_CLASSNAME(Main activity)信息获取-yc

    2013-03-06 14:48:15

    刚接触robotium,看到官方的样例,就在纠结“LAUNCHER_ACTIVITY_FULL_CLASSNAME”这个指的是什么?
    安装的程序名?使用/data/data目录中查看到的程序名,会报错:

    Test run failed: Instrumentation run failed due to 'Process crashed.'

    查看apk程序包的LAUNCHER_ACTIVITY_FULL_CLASSNAME(Main activity)方法:
    1、eclipse中运行该程序项目,LogCat窗口可以看到如下信息:

    [2013-03-06 14:21:53 - XX] ------------------------------
    [2013-03-06 14:21:53 - XX] Android Launch!
    [2013-03-06 14:21:53 - XX] adb is running normally.
    [2013-03-06 14:21:53 - XX] Performing com.XX.activity.XXActivity activity launch
    [2013-03-06 14:21:55 - XX] Uploading XX.apk onto device 'emulator-5554'
    [2013-03-06 14:23:19 - XX] Installing XX.apk...
    [2013-03-06 14:23:28 - XX] Success!
    [2013-03-06 14:23:28 - XX] Starting activity com.XX.activity.XXActivity on device emulator-5554

    注:com.XX.activity.XXActivity即为apk程序包的LAUNCHER_ACTIVITY_FULL_CLASSNAME(Main activity)

    2、AVD或手机中安装apk程序包
    在cmd中使用:adb logcat 程序包名
    如:adb logcat com.XX
    在AVD或手机中启动该程序
    cmd中就会显示出如下信息:
    I/ActivityManager(   61): Start proc com.XX for activity com.XX/.activity.XXActivity: pid=866 uid=10034 gids={1015, 3003, 1006}

    注:com.XX.activity.XXActivity即为apk程序包的LAUNCHER_ACTIVITY_FULL_CLASSNAME(Main activity)

    3、使用re-sign.jar
    配置ANDROID_HOME为 android sdk的安卓目录,例如:D:\android-sdk
    配置PATH,添加:%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;

    下载地址:http://www.troido.de/re-sign.jar
    下载完成后,在命令行下通过 java -jar re-sign.jar会出现一个窗口,然后将apk拖到这个窗口中,就会自动生成一个debug key的apk,同时会弹出一个信息框,里面就有package name包名及Main activity信息;

Open Toolbar