Introduction



FoneMonkey records and plays back user interface interactions with native Android applications.


要使用FoneMonkey,则将FoneMonkey构建到你的Andr​​oid应用程序。然后,您可以使用FoneMonkey控制台录制和播放用户界面交互。 控制台是一个独立的桌面应用程序可以连接到Android模拟器或实际设备(通过USB)或到达的IP地址连接上运行的应用程序。


可以插入些验证步骤到你录制的脚本代码中,作为持续集成构建的一部分,生成可执行的JUnit 测试脚本。



下载与安装

  1. 下载 fonemonkey.zip.
  2. 通过以下更新网站安装Fonemonkey 控制台插件   
        Eclipse Update Site: http://www.gorillalogic.com/userfiles/androidmonkey/FoneMonkeyUpdatesite/
        注意:当您第一次启动控制台,系统将提示您提供的Android SDK安装目录的路径。
    
   3. 实现你的android项目FoneMonkey 自动化.具体步骤如下:      

     1)Eclipse中安装AspectJ开发工具 插件;
    
 
       2)右击你的待录制工程,select Configure > Convert to AspectJ Project...
       3)AspectJ jar 将被加入到classpath,和AspectJ builder被加入到android project builder(你可撤销select AspectJ Tools > Remove AspectJ Capability)
       4)解压FoneMonkeyAndroid.zip文件。 fonemonkey文件夹复制到您的android project项目的根目录,展开项目目录文件夹;      
       5)右击fonemonkey/aspects文件夹,select Build Path > Use as Source Folder(aspects 包括FoneMonkey要求拦截应用程序事件有关AspectJ切入点的定义);
       6)打开fonemonkey/libs目录,选择fonemonkey.jar 和servlet-api.jar,右击select Build Path > Add to Build Path      
       7)打开工程的manifest file,添加下列权限:
            (1).android.permission.GET_TASKS
            (2).android.permission.INTERNET      
        8)Clean-build 和运行程序



启动控制台 如果尚未运行过FoneMonkey控制台 ,首次运行控制台,会被提示输入你的Andr​​oid SDK的位置。
你设置SDK location 通过 Edit > Set Android Home... 菜单项。
连接到您的应用程序 Select the menu option Connect > Emulator/Local Device
Select Connect > Remote Device 连接到远程设备的应用程序上;



控制台将显示一条消息,表明它是否可以成功连接。


开始录制



正如您与您的应用程序互动,FoneMonkey记录相应的命令。 每个记录的命令有以下值:
  • action - 记录interfaction,例如“Click”或“EnterText”。
  • component - 接受动作的组件类型,例如“Button”或“InputField” 。  此组件可跨平台,许多不同的Andr​​oid类可以映射到相同的FoneMonkey组件类型。
  • monkeyID - 组件的标识符。 FoneMonkey派生一个默认标识符基于一些逻辑元件。 例如,一个按钮的默认monkeyID是其标签文本。
  • Args - 有些命令有关联的参数。 例如,EnterText命令有一个参数,它提供了输入值的文本价值。
  • Timeout - 以毫秒为单位,等待命令的相应时间。默认的超时时间通过  Play > Set Default Timeout... 菜单来设定.



播放您的脚本 单击工具栏上的“播放”按钮,播放你的脚本。 双击某一行将自动播放此行脚本,也可以选择并播放多行命令。
若只有一行被选中,则点击播放按键,将从此行开始播放脚本直至末尾。如果脚本回放过程中发生故障,例如,如果无法找到组件,突出失败的地方和消息显示在控制台窗口的底部。



编辑你的脚本
你可以在控制台表格中直接改写你的脚本代码, 右击表中的单元格将显示各种编辑选项。 你可进行 Edit > Insert Row or Edit > Append Row

增添验证步骤
要添加一个验证步骤,需创建一个新行,右击菜单中选择Duplicate Row,或通过选择Edit > Insert Command,即可插入一个验证步骤在此两行中。
右击此行,可改变和选择某个验证命令,每个验证命令需要两个参数。第一个参数是验证组件属性,而第二个参数是预期值。
例如,你可以通过以下命令验证当前“Planets”的下拉列表中被选项为Mercury.VerifyExact DropDownList Planets selectedItem Mercury The property selectedItem is the property of an Android Spinner component that contains the currently selected value.如下的验证命令可用。
  • VerifyExists - 验证是否存在此monkeyID的组件。
  • VerifyExact - 验证是否存在此类型和monkeyID的组件,ARG1指定属性,ARG2指定精确值。
  • VerifyWildcard - 验证是否存在此类型和monkeyID的组件,ARG1指定属性,ARG2指定一个通配符模式匹配(文件模式匹配包含*通配符?)。
  • VerifyRegex - 验证是否存在此类型和monkeyID的组件,ARG1指定一个匹配正则表达式属性,ARG2指定精确值。





认识组件属性


如上所述,FoneMonkey验证组件的属性。 这些属性是“JavaBean属性”的组成部分,它们的值是通过getSomeProperty 和 isSomeProperty 方法提供的。属性名是方法的名字去掉"get" or "is", 并以小写字母开头。
For example, the isChecked() value of a CheckBox is accessed by the property "checked", and the getSelectedItem() value of a List is accessed by the "selectedItem" property.

您可以通过阅读组件的Javadoc文档,查找组件属性的名称。
所有属性值转换为字符串值比对预期值或形式。

某些情况下需设定执行脚本等待时间

FoneMonkey会重试执行命令,直到执行完成或执行超时。超时值设置菜单项:Play > Default Timeout。 在控制台上设置超时值(以毫秒为单位),您可以设置单个命令的超时。

例如,假定应用程序的一个按钮是采取从一到十秒的计时方式,来控制检索所有数据的所需的时间的。则执行验证此按钮时,你可以强制脚本等待10秒,设置VerifyExists 超时值为10000.



设定播放速度
选择菜单项 Play > Playback Speed,设置执行完每个命令后迟延多少毫秒,来控制播放速度 Because FoneMonkey retries failed commands, it's possible to set the delay time to zero in which case the script will run as fast as possible.由于FoneMonkey会重试失败的命令,在这样情况下,尽可能设置延迟时间为零,以便尽快的执行脚本。

生成 JUnit Tests



控制台可以导出JUnit tests的执行脚本。这些脚本用例作为独立的进程,运行在任何JDK的平台上。不能直接运行在android模拟器和设备。



要在Eclipse中运行测试,需创建个新的Java项目。 选择菜单项 File > Export JUnit TestCase 生成一个 JUnit TestCase.保存TestCase的源代码到你新创建的java项目的默认包中。







认识生成的 JUnit Tests



下面是一个生成的JUnit TestCase的例子:




对每个命令,FoneMonkey每行代码会生成相对应的命令行
app.find("ComponentType", "monkeyID").action(args)

运行生成的测试用例

运行在Eclipse中生成的TestCase,右击此源文件,并选择Run As...> JUnit Application。 Eclipse会提示TestCase运行情况,然后将执行的TestCase的结果以JUnit视图形式显示出来。
posted on 2012-02-06 16:51  随我畅翔  阅读(2860)  评论(0编辑  收藏  举报