发布新日志

  • 修改基于InstrumentationTestRunner的测试报告

    2015-04-13 17:06:29

    Android的测试框架通过InstrumentationTestRunner对被测应用进行控制与执行,可以对InstrumentationTestRunner进行扩展以完成测试结果收集,再通过jenkinsPublish JUnit test result report插件得到结果报告。

    l  JunitTestrunner

    n  https://github.com/jsankey/android-junit-report下载android-junit-report-1.5.8.jar

    n  导入该jar

    n  在测试工程的AndroidManifest文件中引入该执行测试用例的类名:android:name="com.zutubi.android.junitreport.JUnitReportTestRunner"

    n  配置其为instrumentation runner:右键测试工程---Run As---Run Configurations--- Test下选择Instrumentation runner

    n  运行并导出junit-report.xml:跑完测试用例后,在被测工程的files文件夹中生成junit-report.xmladb pull /data/data/com.rytong.emp.test/files/junit-report.xml e:/

    l  JenkinsTestrunner

    n  robotium测试工程中新建packagecom.rytong.emp.test.Jenkins,新建classJenkinsTestrunner

    n  拷贝测试报告定制代码:生成TEST-all.xml报告文件,存放于SD卡的mnt/sdcard/robotium目录下

    n  在测试工程的AndroidManifest文件中引入该执行测试用例的类名:android:name=" com.rytong.emp.test.Jenkins.JenkinsTestrunner" 

    n  配置其为instrumentation runner:右键测试工程---Run As---Run Configurations--- Test下选择Instrumentation runner

    n  运行并导出junit-report.xml:可在eclipse中运行一边测试修改是否生效,在jekins集成时需命令行执行,跑完测试用例后,在被测工程的sdcard/robotium文件夹中生成TEST-all.xmladb pull /mnt/sdcard/robotium/TEST-all.xml e:/

  • robotium空指针异常

    2015-04-02 09:22:01

     solo.ViewFetcher.getNonDecorViews(ViewFetcher.java:163)

    之前写的脚本运行正常,重新安装环境,使用jdk1.7+Androidv4.3+robotium-solo-3.4.1,执行 Robotium 测试脚本抛出如下异常:

    java.lang.NullPointerException
    at com.jayway.android.robotium.solo.ViewFetcher.getNonDecorViews(ViewFetcher.java:163)

    ......

    排错过程:在排除代码自身问题后,更换环境成jdk1.6+Androidv4.2+robotium-solo-3.4.1,此问题依然存在,多费周折后用关键字ViewFetcher查到是Androidv4.2之后的环境问题,将换成robotium-solo换成3.6版本以上,即可解决。

  • solo.ViewFetcher.getNonDecorViews(ViewFetcher.java:163)

    2015-04-02 09:19:03

    robotium空指针异常NullPointerException

    l  solo.ViewFetcher.getNonDecorViews(ViewFetcher.java:163)

    之前写的脚本运行正常,重新安装环境,使用jdk1.7+Androidv4.3+robotium-solo-3.4.1,执行 Robotium 测试脚本抛出如下异常:

    java.lang.NullPointerException
    at com.jayway.android.robotium.solo.ViewFetcher.getNonDecorViews(ViewFetcher.java:163)

    ......

    排错过程:在排除代码自身问题后,更换环境成jdk1.6+Androidv4.2+robotium-solo-3.4.1,此问题依然存在,多费周折后用关键字ViewFetcher查到是Androidv4.2之后的环境问题,将换成robotium-solo换成3.6版本以上,即可解决。
  • 被测程序是apk形式的测试框架搭建过程

    2015-03-31 14:27:05

    被测程序是apk形式的测试框架搭建过程,参见附件。
  • newCommandTimeout时间使用实践

    2015-03-27 09:44:48

    我曾在before操作内初始化客户端完成后给了一个60秒的sleep时间,什么都没做,开始执行第一个it代码,只完成点击确定按钮,代码如下:

    before(function(done) {

        browser

          .init(init.device.android.Emulator43)

          .sleep(60000)

          .nodeify(done);

      });

     

    after(function(done) {

        browser

          .quit()

          .nodeify(done);

      });

     

      it("1first页,点击确定按钮", function(done) {

          browser

          .elementByName('确定')

          .click() 

          .sleep(10000)     

          .nodeify(done); 

        });

    结果在执行时,client端总报错:

    业务:快速转帐

        1) 1first页,点击确定按钮

        2) "after all" hook

     

      0 passing (1m)

      2 failing

     

      1) 业务:快速转帐110 1first页,点击确定按钮:

         Error: [elementByName("确定")] Error response status: 6

    server端也返回:

    info: [debug] Setting command timeout to 40 secs

    info: Shutting down appium session

    思考得知:是因为初始化后sleep的时间60秒大于了在newCommandTimeout内设定的40秒,导致server端在40s内收不到client端脚本发出的命令,则关闭命令接收,client端得到Error response status: 6

Open Toolbar