使用Teamcity界面Android机器人测试

Al_*_*_th 8 teamcity android automated-tests robotium

由于之前没有回答(也许我没有找到),我调查了以下问题:

如何使用robotium在Android设备上执行自动功能测试,并将其报告给TeamCity等持续集成服务器?

Al_*_*_th 12

由于我没有找到关于该具体问题的任何答案,我进行了调查.以下是我的调查结果和快速操作方法,以帮助人们使用robotium对Android应用程序执行自动功能测试,然后将结果报告给TeamCity等持续集成服务器.请注意,这可能不是最好的解决方案,但我觉得人们可能和我一样.所以在这里!

已使用以下库:

  • Robotium(https://code.google.com/p/robotium/):这是一个Android测试自动化框架.它可以帮助您执行自动化测试,例如单击按钮,自动填充文本以及许多其他内容.
  • Android Junit报告(http://zutubi.com/source/projects/android-junit-report/):此库对于将测试结果发布为可利用的xml格式非常有用.如果你想通过Eclipse运行你的测试,你会在旅途中看到你的测试结果,但是为了导出它们,这个库非常有用

假设您有一个要测试的Android项目,请创建一个Android测试项目(Eclipse确实有一个很好的工作流程来为您创建)并将其设置为与Robotium一起使用.有关如何操作的详细说明,请访问:https://code.google.com/p/robotium/wiki/Getting_Started

然后,您需要将Android Junit Report添加到项目中,以便能够获取测试结果.为此,在您的lib文件夹中添加Android Junit Report*.jar库并将其添加到您的构建路径中(在Eclipse中:Project - > Properties - > Java Build Path - > Libraries - > Add External Jar).

您还必须更改项目的测试运行器.在测试项目的AndroidManifest.xml中添加以下内容:

<instrumentation
      android:name="com.zutubi.android.junitreport.JUnitReportTestRunner"
      android:targetPackage="<insert your package ex:com.alth.myproject" />
Run Code Online (Sandbox Code Playgroud)

完成后,您应该能够正确运行测试.测试结果应该在您的设备中可用(在以下文件夹/data/data//files/junit-report.xml中)


下一步是配置TeamCity构建步骤,以执行运行测试所需的所有不同操作.请注意,我的解决方案可能不是最佳解决方案!

  • 构建步骤1:清除 - 命令行运行程序 - 此构建步骤可能是可选的,具体取决于您决定如何创建build.xml文件和此类构建决策.

    rm -rf <report folder>
    rm -rf <Project build.xml>
    rm -rf <Test project build.xml>
    android update project -p <Path to your project>
    android update test-projecct -m <Path to your project, relative to the test project> -p <Path to your test project>
    
    Run Code Online (Sandbox Code Playgroud)
  • 构建步骤2:启动AVD - 命令行运行程序 - 此构建步骤启动Android虚拟设备.如果您决定在实际设备上运行测试,则此步骤可以是可选的.

    emulator -avd <nameOfYourAvd> -no-boot-anim &
    sleep 45
    
    Run Code Online (Sandbox Code Playgroud)

    &避免构建被虚拟设备启动中断(这是基本的shell命令).sleep命令用于尝试让AVD为下一个构建步骤做好准备

  • 构建步骤3:测试应用程序发布 - Ant runner:构建测试项目,将其安装在虚拟设备上

    Path to build xml file : <Path to your test project>/build.xml
    Additional Ant command line parameters : -f <Path to your test project>/build.xml clean debug install -Dsdk.dir=<Path to your android sdk>
    
    Run Code Online (Sandbox Code Playgroud)
  • 构建步骤4:AVD解锁 - 命令行运行器:解锁AVD屏幕以进行测试

     bash avdUnlock.sh
    
    Run Code Online (Sandbox Code Playgroud)

    avdUnlock.sh的正文:(http://pastie.org/7919761).此脚本在常规AVD端口上发送信息以解锁屏幕.这可以通过仅将命令发送到特定端口并更改构建步骤2以将特定端口添加到模拟器启动来改进.然而,这并不是这个方法的一部分

  • 构建步骤5:启动测试 - 命令行运行器:启动测试

     adb shell pm list instrumentation
     adb shell am instrument -w <insert your test package ex:com.alth.myproject.test>/com.zutubi.android.junitreport.JUnitReportTestRunner
    
    Run Code Online (Sandbox Code Playgroud)

    可以删除第一个adb命令.这仅用于调试目的,以便查看设备上已安装的仪器.

  • 构建步骤6:获取测试 - 命令行运行器:从设备检索测试报告

     adb pull /data/data/<insert your project package ex:com.alth.myproject>/files/junit-report.xml <report folder>/junit-report.xml
    
    Run Code Online (Sandbox Code Playgroud)
  • 构建步骤7:最终模拟器终止 - 命令行运行器:杀死正在运行的android虚拟设备

     adb emu kill
    
    Run Code Online (Sandbox Code Playgroud)
  • 其他构建功能:XML报告处理 - 报告类型:Ant JUnit

     Monitoring rules : <report folder>/*.xml
    
    Run Code Online (Sandbox Code Playgroud)

该方法显然不是最佳的,但回答原始问题.这样做,就可以获取android功能测试报告并将其提供给teamcity以便进行monitore测试结果.

我希望这会对某人有所帮助,如果你有一些问题,我会尽力回答你的问题.

Al_th